Comprobando cuándo se detuvo la animación

Estoy trabajando en una animación UIImageView simple. Básicamente obtuve un montón de números de imagen del 0 al 9 y los estoy animando usando este código.

myAnimation.animationImages = myArray;
myAnimation.animationDuration = 0.7;
myAnimation.animationRepeatCount = 12;
[myAnimation startAnimating];

Aquí myArray es una matriz de uiimages, es decir, 0.png, 1.png, etc.

Todo está bien y su animación está bien. Lo que necesito saber es cuándo sé cuándo se detuvo la animación. Podría usar NSTimer, pero para eso necesito un cronómetro para verificar cuándo comienza y se detiene la animación. ¿Hay un mejor enfoque, es decir, hay alguna manera de saber cuándo UIImageView dejó de animarse?

Miré este hilo como referencia.

UIImageView startAnimating: ¿Cómo consigues que se detenga en la última imagen de la serie?

preguntado el 03 de mayo de 12 a las 16:05

Parece que está haciendo una animación UIImageView, no una animación UIView como indicó. Así que estás obteniendo respuestas incorrectas para lo que quieres. Deberías arreglar la pregunta. -

Correcto Perdón por el error tipográfico en mi pregunta. Sí, estoy animando UIImageView y no UIView. ¿Alguien puede corregir la edición en mi publicación? Cambiar UIView a UIImageView. Ya no puedo editar la pregunta. Gracias -

3 Respuestas

Utilice el animationDidStopSelector. Esto se activará cuando termine la animación:

[UIView setAnimationDidStopSelector:@selector(someMethod:finished:context:)];

luego implementar el selector:

- (void)someMethod:(NSString*)animationID finished:(NSNumber*)finished context:(void*)context {

}

contestado el 03 de mayo de 12 a las 16:05

es.... también debería agregar [UIView setAnimationDelegate:self] que a menudo olvido, ja~ - Trans

Hola Joel, gracias por la respuesta, pero ¿cómo puedo saber qué UIImageview necesita verificar para ver si dejó de animar? Desearía poder modificar la pregunta anterior y cambiar UIView a UIImageView. - Sam B

Sí, hay un enfoque mucho mejor que usar NSTimers. Si está usando iOS 4 o superior, es mejor que comience a usar animaciones en bloque. prueba esto

 [UIView animateWithDuration:(your duration) delay:(your delay) options:UIViewAnimationCurveEaseInOut animations:^{

        // here you write the animations you want


    } completion:^(BOOL finished) {
        //anything that should happen after the animations are over


    }];

Edit: Vaya, creo que leí mal tu pregunta. En el caso de las animaciones UIImageView, no puedo pensar en una mejor manera que usar NSTimers o eventos programados

contestado el 03 de mayo de 12 a las 16:05

Lo siento, tuve un error tipográfico en mi pregunta. Quería preguntar cómo verificar cuándo UIImageView deja de animarse. - Sam B

También puede intentar lo siguiente:

[self performSelector:@selector(animationDone) withObject:nil afterDelay:2.0];

contestado el 03 de mayo de 12 a las 16:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.