2009-11-01 71 views
3

我有一個NSWindow與2 NSViews(一個NSSplitView和一個自定義NSView)。訪問數據以填充這些視圖可能需要一些時間。在此期間,我想弄清這些視圖的內容。灰化NSWindow的內容

我的第一種方法是有一個黑色的第三個NSView覆蓋其他2,並通過改變其alpha值來實現灰色漸變效果。不過,我從那以後就知道有一個兄弟姐妹視圖的層次結構是未定義的。

這裏最好的辦法是什麼?

  • 緩存的2次的NSBitmapImageRep,然後用3視圖替換它們,使用緩存的圖像(S)作爲背景
  • 設置每個視圖單獨(還是不太清楚Alpha值怎麼弄爲灰效應黑色背景)
  • 東西我還沒有考慮

回答

6

我會使用一個子窗口。將其內容視圖設置爲普通的黑色視圖(希望子視圖中包含狀態和進度信息),並將其alpha值添加到所需的淡出視圖中,並將其添加爲希望淡出其內容的窗口的子窗口。

+0

哇。我從來沒有看過窗戶是窗戶的孩子。這很完美,謝謝! – nall 2009-11-01 04:07:08

+0

對於這種情況,子窗口有點矯枉過正。子窗口是指像NSDrawers或附加到窗口邊緣的調色板。 我會在NSD的建議下面,並在您的意見實施一個禁用的狀態,使他們在不活動時繪製不同的狀態。這就是Appkit處理禁用控件的方式。 – NSResponder 2009-11-01 10:45:22

+0

好吧,我也想覆蓋一個進度條,所以這種解決方案在這種情況下效果更好 – nall 2009-11-01 15:57:24