3

我有一个使用 UIImageView 显示的动画:

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

我知道我可以使用 stopAnimating 来停止它,但我想要的是能够暂停它。原因是当您调用停止时,您的动画图像都不会显示,而我希望在我按下按钮时显示的最后一个动画图像保持不变。

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

4

6 回答 6

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.
于 2009-03-09T04:08:46.493 回答
8

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

我继续写了我自己UIView的 ,UIImageView subview使用 ,NSTimer来在图像之间切换。这样做的好处是我可以在闲暇时暂停和恢复计时器,性能似乎不是问题。

于 2008-10-31T22:14:46.850 回答
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];
于 2012-02-11T14:51:09.497 回答
2

这应该可以解决问题:https ://developer.apple.com/library/ios/#qa/qa2009/qa1673.html

它基本上告诉您暂停/恢复任何CALayer基于动画所需的操作。

如果您对使用受控动画的CALayer方法感到不舒服,您总是可以自己制作基于数组的动画。所需的代码很短,您可以从这里获取:http ://rssv2.blogspot.com/2011/04/animating-series-of-images-with-calayer.htmlUIImageViewUIImage

于 2012-03-20T20:02:38.270 回答
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];
于 2009-10-27T03:06:57.820 回答
-1

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

于 2008-10-31T12:39:51.020 回答