Pause UIImageView Animation

I am doing UIImageView animation like this:

//////progressbar start progressbar.animationImages = [NSArray arrayWithObjects: [UIImage imageNamed:@"1.png"], [UIImage imageNamed:@"2.png"], [UIImage imageNamed:@"3.png"], [UIImage imageNamed:@"4.png"], [UIImage imageNamed:@"5.png"], [UIImage imageNamed:@"6.png"], [UIImage imageNamed:@"7.png"], [UIImage imageNamed:@"8.png"], [UIImage imageNamed:@"9.png"], [UIImage imageNamed:@"10.png"], [UIImage imageNamed:@"11.png"], [UIImage imageNamed:@"12.png"], [UIImage imageNamed:@"13.png"], [UIImage imageNamed:@"14.png"], [UIImage imageNamed:@"15.png"], [UIImage imageNamed:@"16.png"], [UIImage imageNamed:@"17.png"], [UIImage imageNamed:@"18.png"], [UIImage imageNamed:@"19.png"], [UIImage imageNamed:@"20.png"], [UIImage imageNamed:@"21.png"], [UIImage imageNamed:@"22.png"], [UIImage imageNamed:@"23.png"], [UIImage imageNamed:@"24.png"], [UIImage imageNamed:@"25.png"], [UIImage imageNamed:@"26.png"], [UIImage imageNamed:@"27.png"], [UIImage imageNamed:@"28.png"], [UIImage imageNamed:@"29.png"], [UIImage imageNamed:@"30.png"], [UIImage imageNamed:@"31.png"], [UIImage imageNamed:@"32.png"], [UIImage imageNamed:@"33.png"], [UIImage imageNamed:@"34.png"], [UIImage imageNamed:@"35.png"], [UIImage imageNamed:@"36.png"], [UIImage imageNamed:@"37.png"], [UIImage imageNamed:@"38.png"], [UIImage imageNamed:@"39.png"], [UIImage imageNamed:@"40.png"], [UIImage imageNamed:@"41.png"], [UIImage imageNamed:@"42.png"], nil]; progressbar.animationDuration = 5.00; progressbar.animationRepeatCount = 0; [progressbar startAnimating]; 

Now I need to pause as soon as the user clicks the button, the images will not be animated and will remain on the current image.

I got this code from the internet to pause it,

  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. 

Will this code work? Also, how would I then disconnect it from the current image?

+4
source share
3 answers

I also tried using this code and it did not work.

Instead, you can use the code provided by the apple in the following link to pause and resume the animation.

http://developer.apple.com/library/ios/#qa/qa1673/_index.html

To pass CALayer to the pauseLayer function, you can use the following code.

 CALayer *player = progressbar.layer; [self pauseLayer:player]; 
+4
source

Here is my approach:

 - (IBAction)play:(id)sender { pauseAnimation = FALSE; [self performSelector:@selector(changeImages) withObject:nil afterDelay:0]; [self.pauseButton setHidden:NO]; [self.playButton setHidden:YES]; } - (IBAction)pause:(id)sender { pauseAnimation = TRUE; [self.pauseButton setHidden:YES]; [self.playButton setHidden:NO]; } - (void)changeImages { if (currentFrame == self.selectedAttachment.noOfFrames) { currentFrame = -1; return; //Don't use return, if a looped playing is required. } if (currentFrame == -1) { currentFrame = 0; } if (pauseAnimation) { return; } [self performSelector:@selector(changeImages) withObject:nil afterDelay:.5]; imageView.image = [frameArray objectAtIndex:currentFrame]; currentFrame ++; } 

Even you can change images between ...

 - (IBAction)replaceImage:(id)sender { UIImage *replaceImage = [[UIImage alloc]init]; replaceImage = [UIImage imageNamed:@"Bluehound.gif"]; int i = arc4random()%25; [frameArray replaceObjectAtIndex:i withObject:replaceImage]; } 

Thanks to everyone. Now you can play, pause, replace images, etc. * there is an error: pressing the play button again increases the speed ...: P

+4
source

Try stopAnimating

 [progressBar stopAnimating]; 
-1
source

Source: https://habr.com/ru/post/1341741/


All Articles