我有一个动画,我正在使用UIImageView显示:
imageView.animationImages = myImages;
imageView.animationDuration = 3;
[imageView startAnimating];
我知道我可以使用stopAnimating来阻止它,但我想要的是能够暂停它。原因是当你打电话给停止时,你的动画图像都没有显示出来,而我希望最后一个在按下按钮时保持最新状态。
我尝试将持续时间设置为更大的数字,但这会导致所有图像也消失。必须有一个非常基本的方法来做到这一点?
答案 0 :(得分:18)
此代码将动画对象暂停在动画过程中的当前位置。如果你记录其他变量,比如时间或进度,或者你需要什么,那么再次恢复动画应该是相当简单的。
UIView *viewBeingAnimated = //your view that is being animated
viewBeingAnimated.frame = [[viewBeingAnimated.layer presentationLayer] frame];
[viewBeingAnimated.layer removeAllAnimations];
//when user unpauses, create new animation from current position.
答案 1 :(得分:8)
我继续编写了我自己的UIView
,UIImageView
subview
,使用NSTimer
在图片之间切换。这样做的好处是我可以在闲暇时暂停和恢复计时器,性能似乎不是问题。
答案 2 :(得分:3)
@oddmeter只是一点编辑:
animatedView.animationImages = images; //images is your array
[animatedView startAnimating];
//Then when you need to pause;
[animatedView stopAnimating]; //Important!!
animatedView.image = [images objectAtIndex: 0];
答案 3 :(得分:2)
这应该可以解决问题:https://developer.apple.com/library/ios/#qa/qa2009/qa1673.html
它基本上告诉您需要做什么来暂停/恢复任何基于CALayer
的动画。
如果您对CALayer
受控动画使用UIImageView
方法感到不舒服,您可以随时自行制作基于UIImage
数组的动画。所需的代码非常短,您可以从这里获取:http://rssv2.blogspot.com/2011/04/animating-series-of-images-with-calayer.html
答案 4 :(得分:0)
另一种选择是设置图像属性以及animationImages
属性。执行此操作将在UIImageView
动画停止时显示静态图像。
假设您的类是UIImageView
的子类并且有NSMutableArray
个图片,请执行以下操作:
self.animationImages = images;
//yes, I'm skipping the step to check and make sure you have at least one
//element in your array
self.image = [images objectAtIndex: 0];
答案 5 :(得分:-1)
也许你可以截取最后一张动画图像并显示它?