- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
每个人和每本书都声称 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/
我是一名优秀的程序员,十分优秀!