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

And*_*ark 12 core-animation ios

我对iOS编程,Objective-C和一般编程都很陌生,所以如果你觉得这个问题令人沮丧,那么请原谅我.

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

- (void)addAnimation:(CAAnimation *)anim forKey:(NSString *)key
Run Code Online (Sandbox Code Playgroud)

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

谢谢你尽你所能的帮助.

Lil*_*ard 11

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


pro*_*rmr 6

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

您不必提供密钥,nil如果您没有任何特殊需要通过密钥查找特定动画,则可以使用密钥.


pro*_*vit 5

它只是动画的一些标识符.您可以稍后使用指定的键调用animationForKey:removeAnimationForKey:方法.

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