Как анимировать GIF-изображение в Какао и установить его не зацикливаться.

Как и упоминается в моем заголовке, я хочу использовать NSImageView, чтобы "анимировать" изображение, но не зацикливать его, когда оно достигает конца анимации.

2 ответа

Решение

Бесконечный цикл изображения GIF не является плохой привычкой NSImageView, он определяется значением (в расширении приложения) в данных изображения GIF. Вы можете запросить это значение по

NSBitmapImageRep *gifRep = // get the gif image from wherever
NSInteger loopCount = [[gifRep valueForProperty: NSImageLoopCount] integerValue];
// a lopCount of zero means: infinite

Но вы также можете установить это значение (перед отправкой NSImageView). Если вы хотите, чтобы анимация остановилась после одного цикла, сделайте следующее:

NSImage *img = [[NSImage alloc] initWithContentsOfFile:fileName]; // or similar
NSBitmapImageRep *gifRep = [[img representations] objectAtIndex:0];
[gifRep setProperty:NSImageLoopCount withValue:@(1)]; //one loop, then stop
[myImageView setImage:img];

Наконец, я получил анимацию Gif в NSImageView.

Xcode 8.2 OSX 10.12

 self.imageView.imageScaling = NSImageScaleProportionallyDown;
 self.imageView.animates = YES;
 self.imageView.canDrawSubviewsIntoLayer = YES;
 [self.imageView setImage:[NSImage imageNamed:@"play.gif"]];
Другие вопросы по тегам