小牛问题:窗口上的CAKeyframeAnimation没有动画

时间:2014-01-04 16:43:01

标签: objective-c animation nswindow osx-mavericks caanimation

我正在努力将我的应用程序改编为Mavericks,因为我已经开发了10.8。到目前为止,我发现了一些我似乎无法解决的问题。其中一个与类似NSPopover的动画有关。

我有一个窗口,我以这种方式制作动画:

_zoomWindow.alphaValue = 0;
[_zoomWindow orderFront: self];

// Configure bouncing animation
CAKeyframeAnimation* frameAnim = [CAKeyframeAnimation animation];
[frameAnim setTimingFunction: [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseInEaseOut]];
[frameAnim setValues: @[[NSValue valueWithRect: startFrame], [NSValue valueWithRect: overshootFrame], [NSValue valueWithRect: endFrame]]];
[frameAnim setDuration: duration];
[frameAnim setDelegate: self];

[_zoomWindow setAnimations: @{@"frame": frameAnim}];

// Configure alpha animation
[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration: duration];
[[_zoomWindow animator] setAlphaValue: 1.0];
[[_zoomWindow animator] setFrame: endFrame display: YES];
[NSAnimationContext endGrouping];

这在10.8上很漂亮!但它在10.9上没有做任何事情。我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:0)

我明白了。结果是它在动画时没有显示任何东西,所以起初我认为它根本不是动画。事实证明,问题完全在于我的代码的另一部分:我正在制作动画的窗口具有我的子视图,并且该视图正在进行一些自定义绘制。真正的问题是视图没有在10.9上绘制任何内容,即使它是在10.8上绘图...一旦我修复了绘图问题,动画就完美无缺。