簡體   English   中英

無法為使用NSToolbar的NSWindowController設置NSButtonCell的背景色

[英]Unable to set background color of NSButtonCell for NSWindowController that uses an NSToolbar

通過在windowDidLoad中使用以下命令,我已經成功更改了大多數xib窗口上NSButtonCells的背景:

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

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

現在,我逐步完成了代碼,並確保代碼中的按鈕確實具有引用(通過IBOutlet),然后在調用方法進行更改之前和之后查看了backgroundColor。 確實確實在更改它,但是由於某種原因,該窗口中的任何按鈕都無法反映出其背景已更改。

是否由於某些原因為什么NSD會在Window內外交換而在windowDidLoad中不起作用? 我嘗試將設置背景色的代碼移到可以互換視圖內外的方法,但仍然沒有效果。

任何想法/建議表示贊賞。 謝謝

UPDATE

irc上的某個人建議我KVO觀察NSButtonCell來查看是否變回原來的狀態。

我進行了設置,設置顏色后就看到了變化,僅此而已。 似乎再也沒有改變...。但是,按鈕仍未在屏幕上以正確的背景色顯示。

日志:

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

更新2

編寫了一個快速示例項目,該項目顯示了選項卡式按鈕的顏色行為和非選項卡式的顏色。 它將在此處在托管箱中托管一段有限的時間: https : //www.dropbox.com/s/nrl71p4yk6iyp4w/TestButtonColor.zip

弄清楚了。 感謝freenode上#macdev中的人員,他們指出不需要使用我正在使用的代碼行:

[self.window.contentView setWantsLayer:YES];

我並沒有真正使用這些圖層,因此無需設置。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM