将CAAnimation添加到图层时,“forKey”参数的用途是什么?

时间:2011-12-06 21:44:13

标签: ios core-animation

我是非常对iOS编程,Objective-C和一般编程的新手,所以如果你觉得这个问题令人沮丧,那么请原谅。

Apple网站上的文档通常很棒,但是我在尝试围绕Core Animation的某些部分时遇到了一些麻烦。我想明确动画CALayer的位置。根据我的理解,我需要创建一个CABasicAnimation对象,使用fromValue,toValue等配置它,然后使用此方法将其添加到图层中:

- (void)addAnimation:(CAAnimation *)anim forKey:(NSString *)key

我的问题是我不知道forKey:参数的重要性是什么。从我在网上的例子中看到的,这不是必需的吗?我想它与键值编码有关? (我仍然不太明白这一点。)即使它不是必需的,我也想知道它是什么,以便我可以在我的应用程序中利用它的用处。

感谢您提供的任何帮助。

3 个答案:

答案 0 :(得分:11)

它允许您覆盖动画。例如,通过改变隐式动画属性(例如opacity)创建的隐式动画将使用属性的名称作为键。这样,如果再次修改它(生成新动画),新动画将替换旧动画,而不是试图让两个动画同时运行。

答案 1 :(得分:6)

CALayer有几种方法可以获取已添加到图层的动画。如果要从CALayer获取,替换或删除特定动画,则必须在调用animationForKey:或removeAnimationForKey:时为其指定密钥。

如果您没有特别需要按键查找特定动画,则无需提供密钥,可以使用nil作为密钥。

答案 2 :(得分:5)

这只是动画的一些标识符。您可以稍后使用指定的密钥调用animationForKey:removeAnimationForKey:方法。

另外,因为图层每个唯一键只能有一个动画,所以您可以将此值用作某种动画类型的标识符,并且所有...ForKey:方法将返回/删除/替换给定动画类型的大多数当前动画/键。

相关问题