cancelar una UIView animateWithDuration antes de la finalización

Tengo este código en mi proyecto:

- (void) fadeImageView { [UIView animateWithDuration:1.0f delay:0 options:UIViewAnimationCurveEaseInOut animations:^{ self.imageView.alpha = 0.0f; } completion:^(BOOL finished) { //make the image view un-tappable. //if the fade was canceled, set the alpha to 1.0 }]; } 

sin embargo, hay circunstancias en las que me gustaría cancelar esta operación antes de que la image se haya vuelto invisible. ¿Hay alguna manera de cancelar esta media animation de animation?

esto podría ayudar

 [UIView animateWithDuration:0.001 animations:^{ [UIView setAnimationBeginsFromCurrentState:YES]; self.imageView.alpha = 1; }]; 

En primer lugar, debe agregar UIViewAnimationOptionAllowUserInteraction a opciones como …

 - (void) fadeImageView { [UIView animateWithDuration:1.0f delay:0 options:UIViewAnimationCurveEaseInOut | UIViewAnimationOptionAllowUserInteraction animations:^{ self.imageView.alpha = 0.0f; } completion:^(BOOL finished) { //make the image view un-tappable. //if the fade was canceled, set the alpha to 1.0 }]; } 

y luego hacer un método como este …

 -(void)stopAnimation { [self.routeView.layer removeAllAnimations]; } 

después de eso, cuando quieras eliminar tu llamada de animation por encima del método usando …..

 [self performSelectorOnMainThread:@selector(stopAnimation) withObject:nil waitUntilDone:YES]; 

Espero que te ayude

Feliz encoding ……… !!!!!!!!!!!! 🙂

EDITAR:

Gracias user1244109 para guiarme por esto.

Para iOS7, tenemos que agregar una opción más UIViewAnimationOptionBeginFromCurrentState como:

 [UIView animateWithDuration:1.0f delay:0 options:UIViewAnimationCurveEaseInOut | UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionBeginFromCurrentState animations:^{ self.imageView.alpha = 0.0f; } completion:^(BOOL finished) { //make the image view un-tappable. //if the fade was canceled, set the alpha to 1.0 }]; 

Desde Apple docs: el uso de este método no se recomienda en iOS 4.0 y versiones posteriores. En su lugar, debe usar animateWithDuration:delay:options:animations:completion: método para especificar sus animaciones y las opciones de animation .:

 [UIView animateWithDuration:1.f delay:0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{ self.imageView.alpha = 0.0f; } completion:NULL];