Как анимировать 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"]];