为什么Core Animation方法是类方法而不是实例方法?

时间:2011-08-15 01:56:36

标签: objective-c ios core-animation

在Core Animation框架中,为什么方法beginAnimations:context:和commitAnimations是UIView的类方法?
为什么不成为实例方法,所以我们编码:

[widget beginAnimations:@""];
[widget commitAnimations];

而不是:

[UIView beginAnimations:@"" context:widget];
[UIView commitAnimations];

1 个答案:

答案 0 :(得分:1)

beginAnimations:context:类方法开始动画“块”:

[UIView beginAnimations:@"" context:nil];
view1.frame.x = 10;
view2.opacity = 0.5;
[UIView commitAnimations];

使用上面的代码段,view1view2将为该区块内的更改设置动画。

context属性不是您想要设置动画的视图,只是可以通过委托方法访问的信息。

  

上下文

     

要与此组关联的自定义数据   动画。传递给动画委托的信息   消息 - 使用setAnimationWillStartSelector设置的选择器:   和setAnimationDidStopSelector:方法。

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIView_Class/UIView/UIView.html

作为旁注,在iOS4及更高版本中不鼓励使用这种执行动画的方式。如果您需要定位较旧的iOS版本,请检查标记:

#if NS_BLOCKS_AVAILABLE
    // iOS4 and above
#else
    // iOS3
#endif