2012-11-04 181 views
5

我想解決一個聽起來很簡單的問題:改變NSPopupButton的背景顏色。如何更改NSPopupButton的背景顏色?

Interface Builder只允許將樣式更改爲預定義樣式,並且不允許更改背景顏色。此外,設置IBOutlet沒有幫助,因爲NSPopupButton沒有setBackgroundColor方法。

我也嘗試繼承NSPopupButton以覆蓋drawRect方法。這是我曾嘗試:

- (void)drawRect:(NSRect)dirtyRect 
{ 
    [[NSColor redColor] setFill]; 
    NSRectFill(dirtyRect); 
} 

這在NSPopupButton繪製一個紅色矩形,而不是將其設置爲背景色。

關於如何解決這個問題的任何想法?

回答

8

您應該創建NSPopUpButtonCell的子類,然後覆蓋

- (void)drawBezelWithFrame:(NSRect)frame inView:(NSView *)controlView 

NSPopupButtonCell是NSButtonCell一個子類,其限定用於繪製單個電池組件,例如擋板,標題,圖像的幾種方法。

然後,您可以展開NSPopupButton並將其單元格子類更改爲新的子類,並使用您的繪圖方法。

可可主要使用NSCell來處理繪圖,而不像iOS

-3

該按鈕是由系統繪製的,所以沒有一種真正的方法來設置背景顏色的方式,系統會像您想要的那樣繪製它。您唯一能做的就是將其繪製在drawRect方法,同時繪製標題,並繪製矩形的一部分。