Pregunta

Tengo una animación que estoy mostrando usando un UIImageView:

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

Sé que puedo detenerlo usando stopAnimating, pero lo que quiero es poder pausarlo. La razón es que cuando se detiene, no se muestra ninguna de sus imágenes de animación, mientras que me gustaría que la última que aparece en el momento en que presiono un botón permanezca arriba.

He intentado establecer la duración en un número mucho mayor, pero eso también hace que todas las imágenes desaparezcan. Debe haber una forma realmente básica de hacer esto?

¿Fue útil?

Solución 2

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

Seguí adelante y escribí mi propia UIView , con un UIImageView subviewview , que utiliza un NSTimer para cambiar entre imagenes La ventaja de esto es que puedo pausar y reanudar el temporizador en mi tiempo libre, y el rendimiento no parece ser un problema.

Otros consejos

Este código pausará 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 debes hacer para pausar / reanudar cualquier animación basada en CALayer .

Si no se siente cómodo utilizando los métodos de CALayer en la animación controlada por UIImageView , siempre puede hacer la animación basada en matrices de UIImage . El código necesario es muy corto, puede tomarlo desde aquí: http://rssv2.blogspot.com/2011/04/animating-series-of-images-with-calayer.html

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 haya detenido sus animaciones.

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];

¿Quizás puedas tomar una captura de pantalla de la última imagen animada y mostrarla?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top