Comment fonctionne [UIView beginAnimations]?
Je me demandais comment les animations de travail en Cocoa Touch. Par exemple:
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
view1.alpha = 1.0;
view2.frame.origin.x += 100;
[UIView commitAnimations];
Comment UIView
suit l'évolution des propriétés des deux points de vue?
Je soupçonne que KVO est utilisé, mais est-il vraiment observer les changements à tous les points de vue entre les beginAnimations
et commitAnimations
appels?
Toute réflexion serait appréciée!
source d'informationauteur Martin Cote
Vous devez vous connecter pour publier un commentaire.
Une explication simplifiée:
Toutes les animations pour tous les points de vue sont traités sur une seule pile,
beginAnimations:context:
de pousser un nouveau activeCAAnimationGroup
sur la pile, etcommitAnimations
pop active d'animation de groupe.Si il y a un actif d'animation de groupe sur la pile, puis tous les ouvreurs de propriétés animables permettra de créer
CAAnimation
sous-classe des instances pour traiter la propriété et l'ajouter ensuite à l'actif de l'animation de groupe.Lors de la dernière animation est sorti, il est rejoué.
Je crois que c'est juste un wrapper sur le vieux CoreAnimation appels. Regardez dans le CoreGraphics API, vous pouvez voir qu'il y a plusieurs clés que vous devez définir dans un dictionnaire, tout en offrant de début et de fin des valeurs de ces clés.