我正在尝试解决一个听起来很简单的问题:更改 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/