Pro*_*ber 22 core-animation ios
每个人和每本书都声称CALayer中存在隐式动画.但是,每次我想验证到目前为止,我最终都会严格按照设定值进行验证.完全没有动画.
这是项目中没有其他任何事情发生的例子.我所做的就是创建一个视图,然后获取它的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];
视图包含一些东西,所以我可以看到变化.我看到了视觉上的变化,但作为一个坚硬的瞬间.完全没有动画.
因此,在撰写关于核心动画和隐式动画的内容时,要么所有这些书都是错误的并且考虑到旧的Mac OS X知识,要么我做错了.任何人都可以提供一个演示iPhone上隐式动画的工作示例吗?
Lil*_*ard 66
UIKit禁用隐式动画.更具体地说,与UIView关联的CALayer永远不会隐式动画.您自己创建并且与UIView无关的CALayers将购买正常的隐式动画机制.
如果您对这是如何工作感兴趣的话,隐式动画会在正常的-actionForKey:lookup之后发生.如果给定属性有CAAction,则使用它.否则,使用隐式动画.在与UIView关联的CALayer的情况下,UIView实现-actionForLayer:forKey:委托方法,当不在UIView动画块中时,它总是返回[NSNull null]以表示动作查找应该在此处停止.这可以防止隐式动画工作.在UIView动画块内部,它构造自己的动作来表示当前的UIView动画设置.同样,这可以防止隐式动画.
如果您需要为UIView不会为您执行的CALayer属性设置动画,则可以使用显式CAAnimation子类(例如CABasicAnimation).
| 归档时间: | 
 | 
| 查看次数: | 5176 次 | 
| 最近记录: |