2012-04-19 9 views
7

Se ci sono due animazioni in sequenza, vorrei rimuovere la prima animazione e avviare la seconda animazione dalla posizione corrente. Ho usato [layer removeAllAnimations] per cancellare la prima animazione prima di aggiungere la seconda animazione al layer, il layer torna sempre alla posizione iniziale. So che è l'azione predefinita di removeAllAnimations, ma vorrei sapere se c'è un modo per impostare il layer in modo che rimanga la posizione corrente. Grazie mille.Come lasciare che la vista di animazione rimanga nella posizione corrente quando [layer removeAllAnimations] chiamato

Aggiornamento - Ho ottenuto questo ottenendo la posizione PresentationLayer e assegnandola alla posizione del livello del modello. E ho anche usato - (void) animationDidStop: (UIAnimation *) animazione terminata: (BOOL) flag; per verificare se l'animazione è finita.

+1

Non c'è bisogno di chiamare 'removeAllAnimations' (se siete abbiate timore di perdita di memoria). Ad ogni modo: 'animation.fillMode = kCAFillModeForwards; animation.removedOnCompletion = NO; 'di solito fanno il trucco. –

+0

Grazie rokjarc. Sì, hai ragione, ma quello che voglio fare è cancellare la prima animazione prima che finisca e iniziare la seconda. Ho fatto questo ottenendo la posizione PresentationLayer e assegnandola alla posizione del livello del modello. Successivamente, modifico anche il metodo delegate animationDidStop per verificare se l'animazione si è fermata. – Jason

+0

mi ha aiutato anche io. – iOmi

risposta

1

Si potrebbe utilizzare: myView.frame = [[myView.layer presentationLayer telaio]]

Problemi correlati