objective animatedimage iphone cocoa-touch animation uiimageview

iphone - animatedimage - Cómo pausar una animación UIImageView



objective c uiimage (6)

Tengo una animación que estoy mostrando con UIImageView:

imageView.animationImages = myImages; imageView.animationDuration = 3; [imageView startAnimating];

Sé que puedo detenerlo usando stopAnimating, pero lo que quiero es poder detenerlo. La razón es que cuando llamas a la parada, no se muestran ninguna de tus imágenes de animación, mientras que me gustaría que la última que está activa en el momento en que presiono un botón permanezca en alto.

Intenté establecer la duración en un número mucho más grande, pero eso causa que todas las imágenes desaparezcan también. Debe haber una forma realmente básica de hacer esto?


Tal vez puedas tomar una captura de pantalla de la última imagen animada y mostrar eso?


Este código pondrá en pausa un objeto animado en su posición actual en el proceso de animación. Si registra otras variables como el tiempo o el progreso o lo que necesite, debería ser bastante trivial reanudar la animación nuevamente.

UIView *viewBeingAnimated = //your view that is being animated viewBeingAnimated.frame = [[viewBeingAnimated.layer presentationLayer] frame]; [viewBeingAnimated.layer removeAllAnimations]; //when user unpauses, create new animation from current position.


@oddmeter solo una pequeña edición:

animatedView.animationImages = images; //images is your array [animatedView startAnimating]; //Then when you need to pause; [animatedView stopAnimating]; //Important!! animatedView.image = [images objectAtIndex: 0];


Esto debería hacer el truco: https://developer.apple.com/library/ios/#qa/qa2009/qa1673.html

Básicamente, te dice lo que tienes que hacer para pausar / reanudar cualquier animación basada en CALayer .

Si te sientes incómodo al utilizar los métodos UIImageView animación controlada por UIImageView , siempre puedes hacer la animación basada en el arreglo UIImage tú mismo. El código necesario es muy corto, puede tomarlo desde aquí: http://rssv2.blogspot.com/2011/04/animating-series-of-images-with-calayer.html


Hmmm ... ya que nadie parece saber, supongo que no es posible.

Seguí adelante y escribí mi propia UIView , con una subview UIImageView , que usa un NSTimer para alternar entre las imágenes. La ventaja de esto es que puedo pausar y reanudar el temporizador cuando me plazca, y el rendimiento no parece ser un problema.


Otra opción es establecer la propiedad de la imagen, así como la propiedad animationImages . Al hacer esto, se mostrará la imagen estática cuando el UIImageView tenga sus animaciones detenidas.

Suponiendo que su clase es una subclase de UIImageView y tiene un NSMutableArray de imágenes, haga lo siguiente:

self.animationImages = images; //yes, I''m skipping the step to check and make sure you have at least one //element in your array self.image = [images objectAtIndex: 0];