反常行爲我有一個看起來像這樣的視圖層次:與層支持/層託管NSViews
所以基本上我有一個NSSplitView與包含滾動視圖(表視圖一個子視圖)以及包含3個子視圖的頁腳視圖。一些重要的事情需要注意:
- 採用10.8基地SDK,沒有自動佈局
- 窗口的內容視圖,拆分視圖中,滾動和頁腳視圖的父視圖和滾動視圖頁腳視圖都是圖層支持與NSViewContentsRedrawOnSetNeedsDisplay重繪策略。
NSScrollView
的NSClipView
是一個特殊的子類,它是圖層託管視圖並使用CAScrollLayer
作爲支持圖層。- 顏色視圖是一個簡單的圖層背景視圖,它具有背景顏色集。
- 的背景視圖是層託管視圖,其具有與所述內容屬性設置爲一個圖像(contentsCenter也設置)
- 的內容的瀏覽一個子層是一個層支持包含單個子視圖的容器視圖,自定義圖層支持按鈕視圖(不是NSButton)。
- 頁腳視圖約3個像素
我越來越漂亮的反常行爲與此佈局重疊滾動視圖。以下是我收到的三個不同場景,每次啓動應用程序時都會隨機化。
1)一切都顯示OK。背景視圖和所有的內容是否有:
2)按鈕出現細,但背景視圖似乎是部分透明的:
3)背景視圖顯示正確但按鈕不見了:
絕對沒有代碼在每個這些場景之間發生變化。我只是停止並再次運行應用程序。我確信我不會在運行時更改與不透明有關的任何內容。我在運行時做的唯一事情是在視圖上設置背景顏色和圖像。
編輯:我有一種感覺,重疊的意見可能會造成麻煩,所以我沒有重疊測試,並得到相同的結果。
編輯2:這似乎是層支持視圖層的zPosition
的問題。訂單是亂碼和隨機的。如果我手動強制層的zPosition到正確的值來匹配子視圖順序,那麼一切都很好。不幸的是,我找不到比設置zPosition
更簡單的方法。
您是否正在運行OS X Beta?在10.8.3測試版中,我對層和層次支持的東西有一些非常糟糕的體驗。 – CodaFi
不,運行10.8.2 – indragie