如何暂停UIImageView动画

时间:2008-10-31 11:49:19

标签: iphone cocoa-touch animation uiimageview

我有一个动画,我正在使用UIImageView显示:

imageView.animationImages = myImages;
imageView.animationDuration = 3;
[imageView startAnimating];

我知道我可以使用stopAnimating来阻止它,但我想要的是能够暂停它。原因是当你打电话给停止时,你的动画图像都没有显示出来,而我希望最后一个在按下按钮时保持最新状态。

我尝试将持续时间设置为更大的数字,但这会导致所有图像也消失。必须有一个非常基本的方法来做到这一点?

6 个答案:

答案 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)

嗯...因为似乎没有人知道我猜这是不可能的。

我继续编写了我自己的UIViewUIImageView 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)

也许你可以截取最后一张动画图像并显示它?