2012-11-04 184 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方法,同时绘制标题,并绘制矩形的一部分。