图层支持的 NSView 动画

Ale*_*lex 5 cocoa core-animation objective-c nstableview

我有一个想要设置动画的 NSView,但是该 NSView 有一个 NSTableView,当视图是图层支持时,该 NSTableView 不会显示正确性(这又是动画视图所必需的)。所以我的答案是在动画之前让视图图层支持,然后当动画完成时删除图层,如下所示:

[animatingView setWantsLayer: YES];

[NSAnimationContext beginGrouping];

[[animatingView animator] animateSomething];

[[NSAnimationContext currentContext] setCompletionHandler: ^{
    [animatingView setWantsLayer: NO];
}];

[NSAnimationContext endGrouping];
Run Code Online (Sandbox Code Playgroud)

但是,使用此代码,视图根本不会产生动画。我发现,如果删除该[animatingView setWantsLayer: NO];线,它的动画效果会恰到好处,但表视图无法正确显示(请参阅问题以获取其中一个问题的示例)。

所以,我的问题是:我该如何解决这个问题?我想要为视图设置动画,但我希望表格能够正确显示,但此解决方法不起作用。而且我不明白为什么...

Ken*_*tzo 2

一旦你将 NSView 设置为图层支持,它就无法恢复。

我建议您尝试使 NSTableView 成为图层支持视图的兄弟,而不是子视图。