更改 NSComboBox 下拉菜单背景颜色

问题描述 投票:0回答:3

我有 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
下拉菜单的背景颜色?

有人吗?

objective-c macos cocoa nscombobox
3个回答
0
投票

嗯,我使用了

NSButton
和菜单,所以我可以使用
NSMenuItems
和自定义视图。这并不是您真正需要的,但您可以用
NSTextField
NSButton
NSMenu
进行组合框替换。也许这样会更容易。


0
投票

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

enter image description here

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


0
投票
private let comboBox: NSComboBox = {
    let box = NSComboBox(labelWithString: "Please select...")
    box.focusRingType = .none
    box.isButtonBordered = false
    box.drawsBackground = true
    box.backgroundColor = NSColor.brown
    box.wantsLayer = true
    box.layer?.backgroundColor = NSColor.brown.cgColor
    box.layer?.cornerRadius = 7
    return box
}()
© www.soinside.com 2019 - 2024. All rights reserved.