将 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?