我可以在最后一帧停止UIImageView动画吗?

Iva*_*van 32 iphone cocoa-touch uikit

我有一个使用UIImageView的动画

myAnimatedView.animationImages = myImages;
myAnimatedView.animationDuration = 1;
myAnimatedView.animationRepeatCount = 1;
[myAnimatedView startAnimating];
Run Code Online (Sandbox Code Playgroud)

如何判断动画在最后一帧停止还是在该系列图像的最后一帧可见?

先感谢您

小智 74

UIImageView类上的image属性具有以下文档:"如果animationImages属性包含非nil的值,则不使用此属性的内容."

因此,在iOS4中保持动画的最后一帧的技巧是首先将图像属性设置为最后一帧(而animationImages仍为零),然后设置animationImages属性并调用startAnimating.动画完成后,将显示图像属性.不需要回调/委托.

  • 我只是尝试在iOS5上运行它.我把`animation.image = [myAnimatedView.animationImages lastObject];`放在`[myAnimatedView startAnimating];`之前,动画停在最后一张图片上. (27认同)
  • 从那个文档中那是没有意义的。如果它按照它说的去做,那么分配图像就不会做任何事情。该文档是错误的-使用了图像属性*,而该图像没有动画。 (2认同)

小智 15

您可以将最后一帧的图像设置为UIImageView实例,然后当动画完成时,最后一帧图像仍然可见.这是代码:

// create your array of images
NSArray *images = @[[UIImage imageNamed:@"video1.png"], [UIImage imageNamed:@"video2.png"]];
UIImageView *imageView = [UIImageView new];
imageView.image = images.lastObject;
imageView.animationImages = images;
imageView.animationDuration = 1.0; // seconds
imageView.animationRepeatCount = 1;
[imageView startAnimating];
Run Code Online (Sandbox Code Playgroud)


tex*_*ex5 6

动画结束后,您可以将UIImageView图像设置为动画的最后一帧.

myAnimatedView.image = [myAnimatedImages objectAtIndex:myAnimatedImages.count - 1]
Run Code Online (Sandbox Code Playgroud)

我不认为有一个委托方法会在animationFinish事件上通知您,因此您需要启动NSTimer与动画相同的持续时间来获取通知.

UIImageViewAnimation文档