6

具体来说,我希望将 CA 用于除

  • 整数和双精度数
  • CGRect、CGPoint、CGSize 和 CGAffineTransform 结构
  • CATransform3D 数据结构
  • CGColor 和 CGI​​mage 参考

在 CALayers 或 NSViews 以外的对象中

4

3 回答 3

1

如果您可以自己进行更改并且您使用的类是自定义的,您可能希望向您的类添加一个 setProgress:(float) f 方法并使用 CA 对其进行动画处理,然后根据需要修改所需的属性作为 f 的函数.

做一个

[[someObject animator] setValue:[NSNumber numberWithFloat:1.0] forKeyPath:@"someCustomProperty.progress"];

或者如果对象没有动画师,请自己创建正确的 CAAnimation。

于 2008-09-12T14:46:49.783 回答
0

我不确定您到底要做什么,但是如果您想在其他属性上使用 CA,这不是问题。您只需要为密钥路径注册适当的操作。在 Apple 的 Core Animation 文档中有一个使用CAAction的示例。具体来说,你实现 actionForLayer:forKey: 来配置该键的默认动画行为,如果你想隐式地制作属性动画,你实现 runActionForKey:object:arguments: 。

至于CALayers以外的动画对象,我真的不明白。层是核心动画中的根视觉实体。此外,在 iPhone 上,每个 UIView 都支持一个图层,我不相信 iPhone 屏幕上没有任何不在图层中的内容,所以我不明白您为什么担心在不属于图层的内容上使用动画一个CALayer。

于 2008-10-28T03:36:58.950 回答
0

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.

于 2008-09-07T16:36:05.087 回答