How to pause a UIImageView animation
Solution 1
Hmmm...since no one seems to know I guess it's not possible.
I went ahead and wrote my own UIView
, with a UIImageView
subview
, that uses an NSTimer
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.
Solution 2
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.
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.
Solution 3
@oddmeter just a little edit:
animatedView.animationImages = images; //images is your array
[animatedView startAnimating];
//Then when you need to pause;
[animatedView stopAnimating]; //Important!!
animatedView.image = [images objectAtIndex: 0];
Solution 4
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 on UIImageView
controlled animation, you could always just make the UIImage
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.html
Tetaxa
Java, Objective-C, Rails developer...in roughly that order.
Updated on June 04, 2022Comments
-
Tetaxa over 1 year
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?
-
Cathy over 12 yearsi too wanted to pause my animation..In this code wat is presentationLayer?
-
shem almost 11 yearsThis is the right answer (and should be accepted) thx so much!
-
Nikhil Lihla over 9 yearsThis the answer that helped me to achive this.
-
mattsson almost 8 yearsThis only works if you happen to pause right at the frame located at index 0.