我正在尝试使用动画代理制作 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 属性:
他们说框架不是 CALayer 的动画属性。现在,我实际上并没有直接操作图层,但我认为 CABasicAnimation 对象可以。所以......我在这里玩火还是我做得对?
如果我做错了,我会非常感谢一个关于正确方法的指针……请记住,我只能使用 10.6 API。非常感谢!