Domanda

Ho un'animazione che sto visualizzando usando UIImageView:

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

So di poterlo fermare usando stopAnimating, ma quello che voglio è riuscire a metterlo in pausa. Il motivo è che quando chiami stop, nessuna delle tue immagini di animazione viene visualizzata, mentre vorrei che l'ultima fosse attiva nel momento in cui premo un pulsante per rimanere in piedi.

Ho provato a impostare la durata su un numero molto più grande, ma ciò fa scomparire anche tutte le immagini. Ci deve essere un modo davvero semplice per farlo?

È stato utile?

Soluzione 2

Hmmm ... dal momento che nessuno sembra sapere suppongo che non sia possibile.

Sono andato avanti e ho scritto il mio UIView , con un UIImageView subview , che utilizza un NSTimer per passare tra le immagini. Il vantaggio di ciò è che posso mettere in pausa e riprendere il timer a mio piacimento e le prestazioni non sembrano essere un problema.

Altri suggerimenti

Questo codice mette in pausa un oggetto animato nella sua posizione corrente nel processo di animazione. Se registri altre variabili come il tempo o l'avanzamento o qualunque cosa ti serva, dovrebbe essere abbastanza banale riprendere nuovamente l'animazione.

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 piccola modifica:

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


    //Then when you need to pause;

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

Questo dovrebbe fare il trucco: https://developer.apple .com / library / ios / # qa / qa2009 / qa1673.html

Fondamentalmente ti dice cosa devi fare per mettere in pausa / riprendere qualsiasi animazione basata su CALayer .

Se ti senti a disagio con i metodi CALayer sull'animazione controllata UIImageView , puoi sempre creare tu stesso l'animazione basata su array UIImage . Il codice necessario è molto breve, puoi prenderlo da qui: http://rssv2.blogspot.com/2011/04/animating-series-of-images-with-calayer.html

Un'altra opzione è quella di impostare la proprietà dell'immagine e la proprietà animationImages . In questo modo verrà visualizzata l'immagine statica quando UIImageView ha le animazioni interrotte.

Supponendo che la tua classe sia una sottoclasse di UIImageView e abbia un NSMutableArray di immagini, procedi come segue:

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

Forse puoi fare uno screenshot dell'ultima immagine animata e visualizzarla?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top