我有 iOS/Android 编程背景,正在开发我的第一个 MAC 应用程序。我正在使用
NSComboBox
列出用户可以选择的一些项目,但在设置下拉菜单的背景颜色时遇到一些问题。
这就是我现在拥有的。您可以看到下拉菜单中的 2 个选项呈白色背景(忘记蓝色,它表明该项目已被选中)。我想把白色改成其他颜色
我做了一些搜索并发现了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
这就是结果
不是我想要的。 :(
简单,如何更改
NSComboBox
下拉菜单的背景颜色?
有人吗?
嗯,我使用了
NSButton
和菜单,所以我可以使用 NSMenuItems
和自定义视图。这并不是您真正需要的,但您可以用 NSTextField
、NSButton
和 NSMenu
进行组合框替换。也许这样会更容易。
我玩了一下。这对你有用吗:
如果您想更改单元格中的每个标题,可以设置标签(也在 IB 中)。
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
}()