sto animare proprietà fotogramma di un UIView utilizzando un CAKeyframeAnimation sul CALayer della vista e animare la proprietà "position". Mi piacerebbe essere in grado di fermare l'animazione al suo stato attuale quando l'utente tocca lo schermo, ma non sono in grado di farlo.Arrestare In Progress CAKeyframeAnimation
posso fermare l'animazione abbastanza facilmente chiamando
[view.layer removeAnimationForKey:kFrameAnimationKey];
Il problema è che né la cornice della vista non è la posizione del livello vengono aggiornati direttamente l'animazione. Se guardo alla proprietà posizione al momento l'animazione inizia e quando finisce in
- (void)animationDidStop:(CAAnimation *)animation finished:(BOOL)finished
non è cambiato.
Sembra che avete bisogno di fare che in modo esplicito quando l'animazione si ferma. Ma se l'animazione si arresta in qualche punto arbitrario, non sai quanto lontano è andato. Quindi la domanda è come far sì che l'animazione aggiorni la proprietà della posizione del livello mentre va, o come sapere fino a che punto l'animazione è andata quando è stata fermata.
Grazie per la risposta! sembra che la chiave qui sia capire cosa sia esattamente lo strato di presentazione di un CALAYER. Non sono sicuro che facciano un ottimo lavoro nel spiegarlo. Non sono ancora sicuro di quale sia il livello del modello. –
La sezione "Core Animation Rendering Architecture" nella "Guida alla programmazione dell'animazione core" ha un bel diagramma di questo concetto. Fondamentalmente, il livello del modello è quello su cui normalmente si impostano i valori e il livello di presentazione è una copia di sola lettura che riflette lo stato istantaneo del livello. –