可可:可可中的哪个方法与动画相同,持续时间:动画:完成:



我可以在mac os cocoa中使用动画器实现动画,例如

[[view animator] setFrame:newFrame];

但我的问题是我必须对一些作为视图属性的点进行动画处理。我可以像以下iPhone代码一样进行操作:

[UIView animateWithDuration:0.3 animations:^{
                                for (Point point in self.points) {
                                    point.x += 10;
                                }
                           } completion:^(BOOL finished) {
                                }];
                            }];

我想知道如何在 mac ox 可可中做到这一点?

通常对于 NSView 动画,您必须覆盖动画师使用的标准动画。

CABasicAnimation* animation = [CABasicAnimation animation];
animation.delegate = yourDelegate;
NSDictionary *animations = [NSDictionary dictionaryWithObjectsAndKeys:animation,@"frameSize",nil];
[view setAnimations:animations];
动画

的关键是要进行动画处理的属性。

如果你不需要委托,你可以使用以下代码:

[CATransaction begin];
[CATransaction setAnimationDuration:0.5];
[CATransaction setAnimationTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
[[view animator] setFrameOrigin:origin];
[CATransaction commit];

如果您需要更复杂的动画,您可以创建一个叠加窗口,其中包含托管内容视图的图层,并为包含视图屏幕截图的图层添加动画。

最新更新