具体来说,我希望将 CA 用于除
- 整数和双精度数
- CGRect、CGPoint、CGSize 和 CGAffineTransform 结构
- CATransform3D 数据结构
- CGColor 和 CGImage 参考
在 CALayers 或 NSViews 以外的对象中
具体来说,我希望将 CA 用于除
在 CALayers 或 NSViews 以外的对象中
如果您可以自己进行更改并且您使用的类是自定义的,您可能希望向您的类添加一个 setProgress:(float) f 方法并使用 CA 对其进行动画处理,然后根据需要修改所需的属性作为 f 的函数.
做一个
[[someObject animator] setValue:[NSNumber numberWithFloat:1.0] forKeyPath:@"someCustomProperty.progress"];
或者如果对象没有动画师,请自己创建正确的 CAAnimation。
我不确定您到底要做什么,但是如果您想在其他属性上使用 CA,这不是问题。您只需要为密钥路径注册适当的操作。在 Apple 的 Core Animation 文档中有一个使用CAAction的示例。具体来说,你实现 actionForLayer:forKey: 来配置该键的默认动画行为,如果你想隐式地制作属性动画,你实现 runActionForKey:object:arguments: 。
至于CALayers以外的动画对象,我真的不明白。层是核心动画中的根视觉实体。此外,在 iPhone 上,每个 UIView 都支持一个图层,我不相信 iPhone 屏幕上没有任何不在图层中的内容,所以我不明白您为什么担心在不属于图层的内容上使用动画一个CALayer。
Well, it seems I cannot do that. What I should be doing is [subclassing NSAnimation](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/AnimationGuide/Articles/TimingAnimations.html subclassing NSAnimation). This will work on a MacOS 10.4+ app, but not on Cocoa Touch, in which I cannot find any alternatives apart from using a NSTimer.