2009-08-26 16 views
12

Mi stavo chiedendo come funzionano le animazioni in Cocoa Touch. Per esempio:Come funziona [UIView beginAnimations]?

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.0]; 

view1.alpha = 1.0; 
view2.frame.origin.x += 100; 

[UIView commitAnimations]; 

Come funziona UIView registra le modifiche apportate alle proprietà dei due punti di vista?

Sospetto che venga utilizzato KVO, ma osserva realmente le modifiche ad ogni visualizzazione tra le chiamate beginAnimations e commitAnimations?

Qualsiasi intuizione sarebbe apprezzata!

risposta

12

una spiegazione semplificata:

Tutte le animazioni per tutte le viste sono gestite in un unico stack, beginAnimations:context: spingerà un nuovo attiva CAAnimationGroup sullo stack, e commitAnimations si aprirà l'attuale gruppo di animazione attiva.

Se è presente un gruppo di animazioni attivo nello stack, tutti i setter per le proprietà animabili creeranno le istanze di sottoclasse CAAnimation per gestire tale proprietà e aggiungerle al gruppo di animazioni attivo.

Quando l'ultima animazione viene spuntata, viene ripetuta.

0

Credo che sia solo un wrapper sulle vecchie chiamate di CoreAnimation. Cerca nell'API CoreGraphics, puoi vedere che ci sono più chiavi che devi impostare in un dizionario, fornendo al contempo valori iniziali e finali per queste chiavi.