Pergunta

Eu tenho uma animação que eu estou exibindo usando um UIImageView:

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

Eu sei que posso pará-lo usando stopAnimating, mas o que eu quero é ser capaz de fazer uma pausa. A razão é que quando você chama stop, nenhuma de suas imagens com animação são exibidos, enquanto que gostaria que o último que é em cima da hora, quando eu apertar um botão para ficar acordado.

Eu tentei definir a duração para um número muito maior, mas que faz com que todas as imagens a desaparecer também. Deve haver uma maneira muito básica para fazer isso?

Foi útil?

Solução 2

Hmmm ... já que ninguém parece saber que eu acho que não é possível.

eu fui em frente e escreveu minha própria UIView, com um UIImageView subview, que usa um NSTimer para alternar entre imagens. A vantagem disto é que eu posso pausar e retomar o temporizador no meu lazer, e desempenho não parece ser um problema.

Outras dicas

Este código irá pausar um objeto animado em sua posição atual no processo de animação. Se você gravar outras variáveis, como o tempo ou o progresso ou o que você precisa, ele deve ser bastante trivial para retomar a animação novamente.

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 apenas um pouco de edição:

    animatedView.animationImages = images; //images is your array
    [animatedView startAnimating];


    //Then when you need to pause;

[animatedView stopAnimating]; //Important!!
    animatedView.image = [images objectAtIndex: 0];

Isso deve fazer o truque: https://developer.apple .com / biblioteca / ios / # qa / qa2009 / qa1673.html

Ele basicamente diz o que você precisa fazer para pausar / retomar qualquer animação baseada CALayer.

Se você se sentir desconfortável usando métodos CALayer em animação controlada UIImageView, você sempre pode apenas fazer a animação baseada em array UIImage si mesmo. O código necessário é muito curto, você pode levá-lo a partir daqui: http://rssv2.blogspot.com/2011/04/animating-series-of-images-with-calayer.html

Outra opção é definir a propriedade imagem, bem como a propriedade animationImages. Fazendo isso irá exibir a imagem estática quando o UIImageView tem suas animações parado.

Assumindo sua classe é uma subclasse de UIImageView e ter uma NSMutableArray de imagens, faça o seguinte:

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

Talvez você possa tirar um screenshot da última imagem animada e exibir isso?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top