UIImageView + animatedGIF总是LOOPS

我使用了“mayoff”(Rob Mayoff)“UIImageView + animatedGIF”制作的类,这是在stackoverflow中的一个答案中提出的。 的UIImageView + animatedGIF

有了它,我可以在iOS的UIImageView中导入animation的.gif图像。 这个类完美地工作,但唯一的问题是.gif始终循环。 不pipe我如何输出(我从photoshop-67帧输出图像,设置重复“一次”),它在UIImageView中永远循环。

我用这两行导入我的.gif文件:

NSURL *url = [[NSBundle mainBundle] URLForResource:@"Loading" withExtension:@"gif"]; self.loadingImageView.image = [UIImage animatedImageWithAnimatedGIFData:[NSData dataWithContentsOfURL:url]]; 

非常简单,它的作品。 我试图设置animationRepeatCount属性为1,由罗布推荐,但没有把戏。 此外,我也尝试将UIImageView的animationImages属性设置为gifImage.images,而不是将视图的图像属性设置为gifImage。 在这种情况下,.gif根本就不是animation。

任何想法如何发挥.gif只有一次? 我可以想到很多技巧(比如设置gif的最后一帧在一段时间之后出现,但是如果可能的话,我会首先尝试一些简单的方法)。

我从该项目中获取testing应用程序,并将viewDidLoad方法更改为:

 - (void)viewDidLoad { [super viewDidLoad]; NSURL *url = [[NSBundle mainBundle] URLForResource:@"test" withExtension:@"gif"]; UIImage *testImage = [UIImage animatedImageWithAnimatedGIFData:[NSData dataWithContentsOfURL:url]]; self.dataImageView.animationImages = testImage.images; self.dataImageView.animationDuration = testImage.duration; self.dataImageView.animationRepeatCount = 1; self.dataImageView.image = testImage.images.lastObject; [self.dataImageView startAnimating]; } 

当应用程序启动时,它animation的图像一次,然后只显示最后一帧。 如果我连接一个button,发送[self.dataImageView startAnimating] ,然后点击button再次运行animation,然后再次停在最后一帧。

确保你按照上面的方式设置图像视图。 确保没有将图像视图的image属性设置为animation图像。 如果要停止animation,则必须将图像视图的image属性设置为非animation图像。

我已经分叉“Dreddik”制作的“uiimage-from-animated-gif”,并添加了一个委托方法

 #pragma mark - AnimatedGifDelegate - (void)animationWillRepeat:(AnimatedGif *)animatedGif { NSLog(@"animationWillRepeat"); //[animatedGif stop]; } 

所以你知道animation重复的时间,并且在每一次重复中都做你自己的事情。 您可以统计animation重复次数,并停止一定数量的animation。

分叉版本库位于https://github.com/rishi420/Animated-GIF-iPhone