如何设置 NSButton 的背景颜色 OSX

how to set background color of NSButton OSX

我想设置 NSButton.There 的背景颜色在属性检查器中没有任何内容所以我想知道是否有任何方法可以通过编程方式完成?

系统控件将需要遵循 Apple 的外观和风格,因此您无法轻易更改背景颜色。如果你想完成这个,你需要 subclass NSButton 并覆盖 drawRect: 方法。缺点是您还需要处理文本绘制,并且可能需要根据按钮状态进行不同的渲染。

编辑。实际上,您需要子class NSButtonCell class 来绘制内容,更多信息可以在这里找到:https://developer.apple.com/library/prerelease/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSButtonCell_Class/index.html#//apple_ref/doc/uid/20000093-SW15

除了子类化之外,您还可以使用像这样的层方法

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

或者您可以制作具有指定颜色的图像并将该图像应用于按钮。

我建议不要对单元格进行子类化。单元格已弃用并即将淘汰。

NSButton 允许您设置没有边框的图像。

子类化 NSView 或 NSControl,执行自定义绘图和跟踪鼠标事件和应用程序的状态 active/window 主动绘制所有自定义状态即使不是更好也同样有效。

单元格不知道AutoLayout,所以如果去单元格土地你应该小心。

像这样使用 NSButton 的背景层:

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