[UIView beginAnimations]如何运作?

Mar*_*ote 12 iphone animation cocoa-touch uiview

我想知道动画在Cocoa Touch中是如何工作的.例如:

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

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

[UIView commitAnimations];
Run Code Online (Sandbox Code Playgroud)

如何UIView跟踪两个视图属性的更改?

我怀疑使用了KVO,但它是否真的观察到beginAnimationscommitAnimations调用之间的每个视图的变化 ?

任何见解将不胜感激!

Pey*_*loW 12

简化说明:

所有视图的所有动画都在一个堆栈上处理,beginAnimations:context:CAAnimationGroup在堆栈上推送一个新的活动,并commitAnimations弹出当前活动的动画组.

如果堆栈上有活动的动画组,则所有可设置动画的属性的设置器将创建CAAnimation子类实例来处理该属性,然后将其添加到活动动画组.

弹出最后一个动画时,将重播该动画.