2013-03-23 76 views
4

我有一个特定的NSView,我想动画,但NSView有一个NSTableView里面不显示correclty当视图是层支持(这反过来需要动画视图)。所以我的答案是动画之前,让视图层支持的右侧,然后当动画做去除层,像这样:层支持NSView动画

[animatingView setWantsLayer: YES]; 

[NSAnimationContext beginGrouping]; 

[[animatingView animator] animateSomething]; 

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

[NSAnimationContext endGrouping]; 

然而,与此代码视图不动画在所有。我发现,如果我删除[animatingView setWantsLayer: NO];行,它的动画效果恰到好处,但表格视图无法正确显示(有关其中一个问题的示例,请参见this问题)。

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

回答

2

一旦你使NSView层支持它不能被恢复。

我建议你试着让你的NSTableView成为支持层的视图的同胞,而不是孩子。

+0

但视图必须包含表,这就是主意。该视图包含表格,一些按钮和一些文本框,并且我想同时为它们设置动画,并且它不是一个一个地为它们设置动画的选项。 – Alex 2013-04-01 18:04:53

+0

@Alex我同意。但不幸的是,你只是面临一个错误,你需要找到解决方法。你必须破解你的NSTableView才能在层级支持的超级视图上正确工作,或者破解动画过程。 – Kentzo 2013-04-02 07:02:37

+0

嗯,当然你有一个观点。还有一些我不明白的地方:为什么上面的代码不能生成动画?我的意思是,我将视图设置为分层支持,然后对其进行动画处理,然后最终我将其设置为不支持层,但这不符合您的任何需求,为什么它不是动画吗?就像我在问题中所说的那样,如果我在完成处理程序中删除该行,它就会生成动画,所以看起来该行确实有所作为。怎么来的? – Alex 2013-04-02 08:16:46