TL; DR: utilizzare CALayer -actionForKey :, non -animationForKey:
@Dimitri risposta Bouniol s' non ha funzionato per me quando viene chiamato da un un setter influenzato all'interno di un blocco di animazione. Il motivo, a mio avviso, è che il sistema di animazione di UIView imposta lo stato prima di avviare l'animazione effettiva (e chiama i setter prima di avviare l'animazione effettiva). Ciò che ha funzionato per me è stato chiamare il simile -actionForKey: metodo sul livello. L'azione restituita ha la durata corretta impostata e può essere utilizzata come nella sua risposta.
CAAnimation *animation = (CAAnimation*)
[self.layer [email protected]"position"]; // or property of interest
[CATransaction begin];
[CATransaction setAnimationDuration:animation.duration];
[CATransaction setAnimationTimingFunction:animation.timingFunction];
// CALayer animation here
[CATransaction commit];
fonte
2014-04-30 22:33:16
Non sono sicuro di capire cosa intendi, la durata dell'animazione non dovrebbe essere 1.0? –
sì, ma sto usando un componente all'interno del blocco che ha bisogno di conoscere la durata, e non voglio passare la durata come variabile – adamsiton
Buona domanda +1 scusa non ho potuto aiutare. –