更改NSComboBox下拉菜单背景颜色

时间:2013-06-13 08:34:02

标签: objective-c macos cocoa nscombobox

我来自iOS / Android编程背景,正在开发我的第一个MAC应用程序。我使用NSComboBox列出了一些用户可以选择的项目,但在设置下拉菜单的背景颜色时遇到了一些问题。

我现在有什么?

这就是我现在所拥有的。您可以在白色背景中看到下拉列表中的2个选项(忘记蓝色,表示已选中该项目)。我想将白色改为其他颜色

enter image description here

我做了什么?

我做了一些搜索并遇到了this个帖子。答案建议继承NSComboBoxCell并覆盖- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView方法。我试了一下..这是我的代码

@interface CustomComboBoxCell : NSComboBoxCell
@end

@implementation CustomComboBoxCell
- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView{
    [super drawWithFrame:cellFrame inView:controlView];

    //I want red color to the dropdown menu, I filled with yellow color
    NSRect bounds = NSMakeRect(cellFrame.origin.x, cellFrame.origin.y,
                     cellFrame.size.width, cellFrame.size.height);
    [[NSColor redColor] setFill];
    NSRectFill(bounds);
}
@end

这是结果

enter image description here

不是我想要的。 :(

问题

简单,如何更改 NSComboBox 下拉菜单的背景颜色?

任何?

2 个答案:

答案 0 :(得分:0)

好吧,我使用了NSButton菜单,因此我可以将NSMenuItems用于自定义视图。这不是您真正需要的,但您可以使用NSTextFieldNSButtonNSMenu替换组合框。也许这会更容易。

答案 1 :(得分:0)

我玩了一下。这对你有用吗?

enter image description here

如果您想更改单元格中的每个标题,可以设置标记(也在IB中)。