I have an animation that I'm displaying using a UIImageView:
imageView.animationImages = myImages;
imageView.animationDuration = 3;
[imageView startAnimating];
I know I can stop it using stopAnimating, but what I want is to be able to pause it. The reason is that when you call stop, none of your animation images are displayed, whereas I would like the last one that is up at the time when I hit a button to stay up.
I have tried setting the duration to a much larger number, but that causes all the images to disappear as well. There must be a really basic way to do this?
Another option is to set the image property as well as the
animationImages
property. Doing this will display the static image when theUIImageView
has its animations stopped.Assuming your class is a subclass of
UIImageView
and have anNSMutableArray
of images, do the following:@oddmeter just a little edit:
This should do the trick: https://developer.apple.com/library/ios/#qa/qa2009/qa1673.html
It basically tells you what you need to do to pause/resume any
CALayer
based animation.If you feel uncomfortable using
CALayer
methods onUIImageView
controlled animation, you could always just make theUIImage
array based animation yourself. The code needed is very short, you can take it from here: http://rssv2.blogspot.com/2011/04/animating-series-of-images-with-calayer.htmlMaybe you can take a screenshot of the last animated image and display that?
This code will pause an animated object at its current position in the animation process. If you record other variables like the time or progress or whatever you need, it should be fairly trivial to resume the animation again.
Hmmm...since no one seems to know I guess it's not possible.
I went ahead and wrote my own
UIView
, with aUIImageView
subview
, that uses anNSTimer
to switch between images. The advantage of this is that I can pause and resume the timer at my leisure, and performance doesn't seem to be an issue.