2013-03-23 49 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