我正在尝试解决一个听起来很简单的问题:更改NSPopupButton的背景颜色。

Interface Builder仅允许将样式更改为预定义的样式,而不允许更改背景颜色。同样,设置IBOutlet也没有帮助,因为NSPopupButton没有setBackgroundColor方法。

我还尝试子类化NSPopupButton来覆盖drawRect方法。这是我尝试过的:

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

这会在NSPopupButton上绘制一个红色矩形,而不是将其设置为背景色。

关于如何解决这个问题有什么想法吗?

最佳答案

您应该创建NSPopUpButtonCell的子类,然后重写

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

NSPopupButtonCell是NSButtonCell的子类,它定义了几种绘制单个单元格组件的方法,例如边框,标题,图像。

然后,您可以展开NSPopupButton并将其单元格子类更改为新的子类,并且它应该使用您的绘制方法。

与iOS不同, cocoa 主要使用NSCell来处理绘图

关于objective-c - 如何更改NSPopupButton的背景颜色?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13222205/

10-09 00:21