Detener una animation de UIView

Posible duplicado:
¿Cancelar una animation UIView?

Tengo la siguiente animation y quiero detenerla cuando presiono un button. ¿Puedes decirme cómo puedo hacerlo? No puedo entender cómo. Gracias.

-(void)animationLoop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context { [UIView beginAnimations:@"Move randomly" context:nil]; [UIView setAnimationDuration:1]; // [UIView setAnimationBeginsFromCurrentState:NO]; CGFloat x = (CGFloat) (arc4random() % (int) self.bounds.size.width); CGFloat y = (CGFloat) (arc4random() % (int) self.bounds.size.height); CGPoint squarePostion = CGPointMake(x, y); strechView.center = squarePostion; [UIView setAnimationDelegate:self]; [UIView setAnimationDidStopSelector:@selector(animationLoop:finished:context:)]; [UIView commitAnimations]; } 

Prueba esto:

 [myView.layer removeAllAnimations]; 

y asegúrese de importar el marco de cuarzo también:

 #import <QuartzCore/QuartzCore.h> 

Las animaciones se aplican utilizando CoreAnimation en el marco QuartzCore, incluso los methods de animation UIView. Simplemente apunte a la capa de la vista que desea dejar de animar y elimine sus animaciones.

Puedes hacer esto:

 [self.view.layer removeAnimationForKey:@"Move randomly"]; 

Esto es más efectivo que llamar [self.view.layer removeAllAnimations] porque esto puede eliminar potencialmente otras animaciones que quieras conservar.

Puede simplemente cambiar el object / propiedad que actualmente está animado. Se detendrá la animation.

Te sugiero que uses NSTimer.

 NSTimer *myTimer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(yourAnimation) userInfo:nil repeats:YES]; - (void)responseToButton:(UIButton *) _button { //when you want to stop the animation [myTimer invalidate]; } - (void)yourAnimation { // move the view to a random point } 

Además, puede establecer las obras de NSTimer en otro hilo para que el hilo principal pueda responder cuando presiona incluso su valor TimeInterval es muy pequeño