gpt4 book ai didi

ios - iOS 中的隐式动画具体发生在什么时候?

转载 作者:IT王子 更新时间:2023-10-29 08:00:07 25 4
gpt4 key购买 nike

每个人和每本书都声称 CALayer 中有隐式动画。然而,到目前为止,每次我想验证这一点时,我都会硬性捕捉到设定值。根本没有动画。

这是项目中的一个示例,其中没有其他任何事情发生。我所做的就是创建一个 View ,然后获取它的 CALayer 实例并执行一些应该隐式设置动画的操作。

[theLayer setValue:[NSNumber numberWithFloat:M_PI * 1.1] forKeyPath:@"transform.rotation.z"];

另一个:

CGRect currentBounds = theLayer.bounds;
currentBounds.size.width += 120.f;
[self.animatedLayer setBounds:currentBounds];

View 当然包含一些内容,所以我可以看到变化。我看到了视觉上的变化,但很难。根本没有动画。

所以,要么所有这些书都是错误的,并且在撰写有关 Core Animation 和隐式动画的文章时脑子里都是旧的 Mac OS X 知识,要么我做错了什么。谁能提供一个在 iPhone 上演示隐式动画的工作示例?

最佳答案

UIKit 禁用隐式动画。更具体地说,与 UIView 关联的 CALayer 永远不会隐式设置动画。您自己创建且与 UIView 无关的 CALayer 将加入普通的隐式动画机制。

如果您对其工作原理感兴趣,隐式动画发生在正常的 -actionForKey: 查找之后。如果给定属性有 CAAction,则使用它。否则,使用隐式动画。在 CALayer 与 UIView 关联的情况下,UIView 实现了 -actionForLayer:forKey: 委托(delegate)方法,当不在 UIView 动画 block 中时,它总是返回 [NSNull null] 表示 Action 查找应该在此处停止。这会阻止隐式动画工作。在 UIView 动画 block 内部,它构造自己的 Action 来表示当前 UIView 动画设置。同样,这可以防止隐式动画。

如果您需要为 UIView 不会为您做的 CALayer 属性设置动画,您可以使用显式的 CAAnimation 子类(例如 CABasicAnimation)。

关于ios - iOS 中的隐式动画具体发生在什么时候?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4749343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com