[UIView beginAnimations]如何运作?

时间:2009-08-26 20:29:57

标签: iphone cocoa-touch animation uiview

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

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

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

[UIView commitAnimations];

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

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

任何见解都将受到赞赏!

2 个答案:

答案 0 :(得分:12)

简化说明:

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

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

弹出最后一个动画时,会重播该动画。

答案 1 :(得分:0)

我相信它只是旧CoreAnimation调用的包装器。查看CoreGraphics API,您可以看到必须在字典中设置多个键,同时为这些键提供开始和结束值。