2013-07-30 46 views
1

我已經成功地改變了NSButtonCells的背景對我大部分的廈門國際銀行窗口通過使用windowDidLoad如下:無法設置NSWindowController NSButtonCell的背景顏色,使用的NSToolbar

[[self.generalOkButton cell] setBackgroundColor:[NSColor blueColor]]; 

出於某種原因,當我嘗試在我的首選項窗口控制器(其中包括一個帶有NSView的工具欄,根據選擇哪個ToolbarItem被換出)執行此操作,任何視圖中任何按鈕的背景色都不會更改。

現在我已經介紹了代碼,並確保代碼中的按鈕確實具有引用(通過IBOutlet),然後在調用方法更改之前查看backgroundColor。它確實正在發生變化,但由於某種原因,該窗口中沒有任何按鈕反映它們的背景被改變了。

是否有一些原因,爲什麼它可能無法在windowDidLoad中工作,因爲NSViews被換入和換出窗口?我試着將設置背景顏色的代碼移動到交換視圖的方法中,但仍然沒有好處。

任何意見/建議表示讚賞。在IRC感謝

UPDATE

有人建議我志願觀察NSButtonCell,看它是否漸漸改回來。

我設置了這一點,我看到改變發生時,我設置的顏色,但就是這樣。沒有什麼似乎再次改變它......但仍然沒有在屏幕上顯示正確的背景顏色的按鈕。

登錄:

BGColor was changed: { 
    kind = 1; 
    new = "NSCalibratedRGBColorSpace 0 0.423529 0.792157 1"; 
    old = "<null>"; 
} 

更新2

編寫了一個簡單的例子項目,同時顯示了標籤按鈕顏色行爲和非分頁。它將在Dropbox託管在有限的時間:https://www.dropbox.com/s/nrl71p4yk6iyp4w/TestButtonColor.zip

回答

1

想通了。由於在freenode上#macdev的傢伙,他們指出,是沒有必要的,我用一行代碼:

[self.window.contentView setWantsLayer:YES]; 

我是不是真的使用層,使得無需設置不。

一旦我刪除這個,按鈕顏色在那個窗口中工作正常。注意:他們還說如果我確實需要使用圖層,我必須設置按鈕的圖層背景顏色才能使其工作。