Detener animateWithDuration

Tengo un ciclo animado en viewController

 - (void)moveAnimating { [UIView animateWithDuration:2.0f animations:^{ _backgroundView.center = CGPointMake(self.center.x , self.center.y - kMoveDistanceHeight); } completion:^(BOOL finished) { if (_backgroundView.animating) { [_backgroundView moveAnimating]; } }]; } 

Quiero detener este animado Cuando la vista viewController viewWillDisappear :

 - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; _backgroundView.animating = NO; [_backgroundView.layer removeAllAnimations]; } 

Porque la animation está en conflicto con dismissViewcontrollerAnimation .

Pregunta:

 [_backgroundView.layer removeAllAnimations]; 

no trabajo…

¿Cómo detener la animation?

Ayúdenme, gracias.

Está cancelando las animaciones correctamente:

 [_backgroundView.layer removeAllAnimations]; 

Pero puede que se olvide de importar QuartzCore.h:

 #import <QuartzCore/QuartzCore.h> 

Si no ayuda, testing esto:

 [CATransaction begin]; [_backgroundView.layer removeAllAnimations]; [CATransaction commit]; 

Si no ayuda, intenta agregar esta línea al código anterior:

 [CATransaction flush]; 

La solución de @KlimczakM no funcionó para mí.

Estoy ejecutando un bloque 'animateWithDuration' que se mueve e image, y utilizo el siguiente código para pausar y reanudar la animation:

 -(void)pauseLayer:(CALayer*)layer { CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil]; layer.speed = 0.0; layer.timeOffset = pausedTime; } -(void)resumeLayer:(CALayer*)layer { CFTimeInterval pausedTime = [layer timeOffset]; layer.speed = 1.0; layer.timeOffset = 0.0; layer.beginTime = 0.0; CFTimeInterval timeSincePause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime; layer.beginTime = timeSincePause; } 

Esto es de la documentation de Apple en este enlace .