2009-08-26 9 views
12

Ich habe mich gefragt, wie Animationen in Cocoa Touch funktionieren. Zum Beispiel:Wie funktioniert [UIView beginAnimations]?

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

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

[UIView commitAnimations]; 

Wie funktioniert UIView die Änderungen an den Eigenschaften der beiden Ansichten verfolgt?

Ich vermute, dass KVO verwendet wird, aber beobachtet es wirklich die Änderungen an jeder Ansichten zwischen den beginAnimations und commitAnimations Anrufe?

Jeder Einblick würde geschätzt werden!

Antwort

12

Eine vereinfachte Erklärung:

Alle Animationen für alle Ansichten auf einem einzigen Stapel verarbeitet werden, beginAnimations:context: wird eine neues aktives CAAnimationGroup auf dem Stapel schieben, und commitAnimations wird die aktuelle aktive Animationsgruppe Pop.

Wenn auf dem Stapel eine aktive Animationsgruppe vorhanden ist, erstellen alle Setter für animierbare Eigenschaften CAAnimation Unterklasseninstanzen, die diese Eigenschaft verarbeiten und dann zur aktiven Animationsgruppe hinzufügen.

Wenn die letzte Animation aufgerufen wird, wird sie erneut abgespielt.

0

Ich glaube, es ist nur ein Wrapper über die alten CoreAnimation Anrufe. Schauen Sie sich die CoreGraphics-API an. Sie können sehen, dass mehrere Schlüssel in einem Wörterbuch enthalten sein müssen, während Anfangs- und Endwerte für diese Schlüssel angegeben werden.

Verwandte Themen