2012-06-24 73 views
0

我有一個基本的Cocoa應用程序,其自定義NSCollectionView覆蓋drawRect:繪製紅色背景(用於說明目的)。drawRect:並不總是在setNeedsDisplay之後調用:YES當父視圖是層支持的時

我注意到在看似隨機的時候,drawRect:不會被調用,雖然我調用了setNeedsDisplay:YES。其他時候,它的工作和收集視圖有一個紅色的背景。

我花了幾個小時,但後來我終於注意到,在視圖層次結構高的父視圖之一是層支持的視圖(我有「核心動畫層」在界面生成器中檢查添加一個元素的陰影)。

將該父視圖更改爲不使用圖層支持立即解決了問題,然後總是按預期方式調用drawRect:

讓我感到困惑的是,在父視圖上啓用層支持時,有時會調用drawRect:,但並非總是如此。

如果父視圖是層次支持的,我是否應該假設我無法在任何子視圖中可靠地覆蓋drawRect:

+0

編輯將「覆蓋」更改爲「覆蓋」。 – NSResponder

回答

1

在層次支持視圖上觀看WWDC 2012視頻,並閱讀-layerContentsRedrawPolicy的文檔。聽起來像你想NSViewLayerContentsRedrawOnSetNeedsDisplay

相關問題