Pausar una animation de UIImageView

Estoy haciendo una animation de UIImageView así:

//////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]; 

Ahora necesito pausarlo así que una vez que el usuario click el button, las imágenes no se animarán y permanecerán en la image actual.

Saqué este código de la web para detenerlo,

  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. 

¿Funcionará ese código? Además, ¿cómo lo haría con la image actual?

También traté de usar este código y no funcionó.

En su lugar, puede utilizar el código proporcionado por apple en el siguiente enlace para pausar y reanudar su animation.

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

Para que CALayer pase a la function pauseLayer, puede usar el siguiente código.

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

Aquí está mi enfoque:

 - (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 requinetworking. } if (currentFrame == -1) { currentFrame = 0; } if (pauseAnimation) { return; } [self performSelector:@selector(changeImages) withObject:nil afterDelay:.5]; imageView.image = [frameArray objectAtIndex:currentFrame]; currentFrame ++; } 

Incluso puedes cambiar las imágenes entre …

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

Gracias a todos. Ahora puede reproducir, pausar, replace imágenes, etc. * hay un error: tocar el button de reproducción aumenta la velocidad …: P

Intente stopAnimating

 [progressBar stopAnimating];