Macos 如何设置NSButton OSX的背景色

Macos 如何设置NSButton OSX的背景色,macos,cocoa,nsbutton,Macos,Cocoa,Nsbutton,我想设置NSButton的背景色。属性检查器中没有任何内容,因此我想知道是否有任何方法可以通过编程方式进行设置?系统控件需要遵循Apple的外观,因此您无法轻松更改背景色。如果要完成此操作,需要将NSButton子类化并覆盖drawRect:方法。缺点是,您还需要处理文本绘图,并且可能需要根据按钮状态进行不同的渲染 编辑。实际上,您需要为绘图材料对NSButtonCell类进行子类化,更多信息可在此处找到:除了子类化之外,您还可以使用如下层方法 NSButton *button = [[NSBu

我想设置NSButton的背景色。属性检查器中没有任何内容,因此我想知道是否有任何方法可以通过编程方式进行设置?

系统控件需要遵循Apple的外观,因此您无法轻松更改背景色。如果要完成此操作,需要将NSButton子类化并覆盖drawRect:方法。缺点是,您还需要处理文本绘图,并且可能需要根据按钮状态进行不同的渲染


编辑。实际上,您需要为绘图材料对NSButtonCell类进行子类化,更多信息可在此处找到:

除了子类化之外,您还可以使用如下层方法

NSButton *button = [[NSButton alloc] initWithFrame:frame];
[superView addSubView:button];
[button setWantsLayer:YES];
button.layer.backgroundColor = [NSColor blueColor].CGColor;

或者,您可以使用指定的颜色制作一个图像,并将该图像应用于按钮。

我建议不要对单元格进行子类化。单元格已弃用,即将退出

NSButton允许您在没有挡板的情况下设置图像

将NSView或NSControl子类化,对鼠标事件和应用程序活动/窗口活动进行自定义绘制和跟踪状态,以绘制所有自定义状态,即使不是更好,也同样有效


单元格不知道自动布局,所以如果要进入单元格区域,请小心

使用NSButton的背景层,如下所示:

buttonName.layer.backgroundColor = NSColor.redColor.CGColor;

只有将按钮设置为“透明”时,此操作才会起作用,这也会导致您丢失标题标签。但现在按下按钮时,按钮的颜色不会改变。