objective-c – 支持Layer的NSView动画

我有一个我想要动画的NSView,但NSView有一个NSTableView,当视图是图层支持时,它不会显示correclty(这反过来又是动画视图的必要条件).所以我的答案是在动画制作之前使视图层支持,然后在动画完成后删除图层,如下所示:

[animatingView setWantsLayer: YES];

[NSAnimationContext beginGrouping];

[[animatingView animator] animateSomething];

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

[NSAnimationContext endGrouping];

但是,使用此代码,视图根本不具有动画效果.我发现如果我删除[animatingView setWantsLayer:NO];它动画恰到好处,但表格视图无法正确显示(有关其中一个问题的示例,请参阅this问题).

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

最佳答案 一旦你使NSView层支持它就无法恢复.

我建议你尝试让你的NSTableView成为图层支持视图的兄弟,而不是孩子.

点赞