ios - animate - core animation
cancelar una animaciĆ³n UIViewWithDuration antes de finalizar (3)
Actualización: prefiera esta respuesta https://stackoverflow.com/a/21527129/194309 de Borut Tomazin
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 vista de imagen se haya vuelto invisible. ¿Hay alguna forma de cancelar esta animación a media animación?
En primer lugar, debe agregar UIViewAnimationOptionAllowUserInteraction a la opción 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 desee eliminar su método de llamada de animación anterior utilizando .....
[self performSelectorOnMainThread:@selector(stopAnimation) withObject:nil waitUntilDone:YES];
Espero que te ayude
Feliz codificación ......... !!!!!!!!!!!! :)
EDITAR:
Gracias usuario1244109 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
}];
De los documentos de Apple: el uso de este método no se recomienda en iOS 4.0 y versiones posteriores. En su lugar, debe usar el animateWithDuration:delay:options:animations:completion:
para especificar sus animaciones y las opciones de animación .:
[UIView animateWithDuration:1.f
delay:0
options:UIViewAnimationOptionBeginFromCurrentState
animations:^{
self.imageView.alpha = 0.0f;
} completion:NULL];