Ho appena creato un animazione keyframe come questo:animazione keyframe momento chiave
[UIView animateKeyframesWithDuration:10 delay:0 options:0 animations:^{
[UIView addKeyframeWithRelativeStartTime:0 relativeDuration:.1 animations:^{
view.alpha = 0;
}];
} completion:nil];
E questo è un CAKeyframeAnimation
che viene creato:
(lldb) po [self.layer animationForKey:@"opacity"]
<CAKeyframeAnimation:0x10a6364b0; keyTimes = (
0,
"0.1",
1
); values = (
1,
0,
0
); calculationMode = linear; delegate = <UIViewKeyframeAnimationState: 0x10a6358d0>; fillMode = both; timingFunction = easeInEaseOut; duration = 10; keyPath = opacity>
Domanda:
Il l'intera animazione dovrebbe impiegare 10 secondi con l'opacità che anima per 10 * 0,1 = 1 secondo, giusto? Quando guardo l'animazione, il cambiamento viene animato in modo molto più lungo di 1 secondo.
Perché?
Il debug di output è corretta (da 0 a 1 secondo animate da 100% a 0% poi per 9 secondi in più animati da 0% a 0%). Puoi descrivere quello che stai vedendo? Stai cambiando l'opacità da qualche altra parte? Non hai attivato animazioni lente nel simulatore, giusto? –
Sì, CAKeyframeAnimazione sembra completamente giusto. Quello che vedo è che l'opacità viene cambiata per 2 - 2,5 secondi, non uno. Non lo sto cambiando da nessuna parte e le animazioni lente sono disattivate. –
Vedete la stessa cosa se create l'animazione del fotogramma chiave da soli (non tramite i metodi di UIView)? –