我想知道动画在Cocoa Touch中是如何运作的。例如:
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
view1.alpha = 1.0;
view2.frame.origin.x += 100;
[UIView commitAnimations];
UIView
如何跟踪两个视图属性的更改?
我怀疑使用了KVO,但它是否真的观察到beginAnimations
和commitAnimations
来电之间每个观点的变化?
任何见解都将受到赞赏!
答案 0 :(得分:12)
简化说明:
所有视图的所有动画都在一个堆栈上处理,beginAnimations:context:
将在堆栈上推送一个新的活动CAAnimationGroup
,commitAnimations
将弹出当前活动的动画组。
如果堆栈上有一个活动的动画组,那么所有可设置动画的属性的setter将创建CAAnimation
个子类实例来处理该属性,然后将其添加到活动动画组。
弹出最后一个动画时,会重播该动画。
答案 1 :(得分:0)
我相信它只是旧CoreAnimation调用的包装器。查看CoreGraphics API,您可以看到必须在字典中设置多个键,同时为这些键提供开始和结束值。