NSView的动画

时间:2012-06-30 15:27:09

标签: macos animation core-animation nsview

我一直在为iOS制作应用程序,并且最近开始为Mac OS X制作应用程序。我正在尝试在NSView上做一些动画。

我想要做的是将NSView的比例反弹,使其收缩至70%,然后通过反弹回到100%。现在我可以做缩放/尺寸调整部分,但它是我现在不能做的动画位。

使用iOS我会在UIView上使用以下内容:

+ (void)animateWithDuration:(NSTimeInterval)duration
                 animations:(void (^)(void))animations
                 completion:(void (^)(BOOL finished))completion

使用它意味着当前一个动画结束时我可以开始新的动画。我一直在为Mac OS X寻找类似的功能。我发现了以下内容:

[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration:2.0];
// Set end state of objects to animate
[NSAnimationContext endGrouping];

这类似于我在iOS 4之前用于动画对象的方式。但是随后引入了动画块(如顶部的show),从那时起我一直在使用它们。所以我的问题是,我错过了Mac OS X的动画块吗?还是有另一种方式吗?

1 个答案:

答案 0 :(得分:14)

如果您使用的是Mac OS X 10.7,您可能会发现使用基于块的NSAnimationContext API更自然:

+ (void)runAnimationGroup:(void (^)(NSAnimationContext *context))changes
        completionHandler:(void (^)(void))completionHandler