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

Posted

技术标签:

【中文标题】将 CAAnimation 添加到图层时,“forKey”参数的用途是啥?【英文标题】:What is the purpose of the "forKey" parameter when adding a CAAnimation to a layer?将 CAAnimation 添加到图层时,“forKey”参数的用途是什么? 【发布时间】:2011-12-06 21:44:12 【问题描述】:

我对 ios 编程、Objective-C 和一般编程非常陌生,所以如果你觉得这个问题简单得令人沮丧,请原谅。

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

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

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

感谢您提供的任何帮助。

【问题讨论】:

【参考方案1】:

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

【讨论】:

同意凯文。当您有显式动画时,指定 forKey 属性的能力可以停止运行隐式动画。 WWDC 2010 Session 424 Video (Core Animation in Practice, Part 1 - developer.apple.com/videos/wwdc/2010) 中对此进行了很好的解释。它比我能解释得更好。【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

此外,由于图层的每个唯一键可能只有一个动画,因此您可以将此值用作某些类型动画的标识符,并且所有 ...ForKey: 方法将返回/删除/替换给定动画类型/键的最新动画。

【讨论】:

以上是关于将 CAAnimation 添加到图层时,“forKey”参数的用途是啥?的主要内容,如果未能解决你的问题,请参考以下文章

何时在自定义 UIVIew 中添加 CAAnimation?

未在委托上调用 CAAnimation 委托方法

arcgis api for javascript 添加图层时设置标注,自定义符号

在ARCGIS中加载图层时加载的图片倒置怎么回事

链接情况下的 CAAnimation 内存使用情况

DotSpatial 自定义MapFunction_mapMain中绘制线(未添加到图层中)