0

我正在尝试使用动画代理制作 NSView 帧的动画。我正在尝试自定义持续时间和时序曲线,并且我需要以适用于 Mac OSX 10.6 的方式执行此操作,因此我无法在 NSAnimationContext 中使用那些看起来非常多汁的方法。

根据我的研究,看来我需要做的是创建自己的 CAAnimation 对象并将其放入我想要动画的对象的动画字典中。这段代码很好用:

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"frameOrigin"];
animation.duration = 1.0;
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

[self.myView setAnimations:[NSDictionary dictionaryWithObject:animation forKey:animation.keyPath]];

然后我可以继续移动视图,如下所示:

[[self.myView animator] setFrame:myNewFrame];

这段代码很好用。但是,我有点担心我没有正确使用 API,因为 Apple 在这里所说的动画 frame 属性:

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreAnimation_guide/AnimatableProperties/AnimatableProperties.html#//apple_ref/doc/uid/TP40004514-CH11-SW1

他们说框架不是 CALayer 的动画属性。现在,我实际上并没有直接操作图层,但我认为 CABasicAnimation 对象可以。所以......我在这里玩火还是我做得对?

如果我做错了,我会非常感谢一个关于正确方法的指针……请记住,我只能使用 10.6 API。非常感谢!

4

0 回答 0