如何设置NSButton OSX的背景颜色

时间:2015-04-01 09:23:10

标签: macos cocoa nsbutton

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

4 个答案:

答案 0 :(得分:6)

系统控件需要遵循Apple的外观和感觉,因此您无法轻松更改背景颜色。如果要完成此任务,则需要子类化NSButton并覆盖drawRect:方法。缺点是你还需要处理文本绘图,以及可能基于按钮状态的不同渲染。

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

答案 1 :(得分:5)

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

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

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

答案 2 :(得分:5)

我建议反对细胞亚类化。单元格已弃用且正在退出。

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

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

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

答案 3 :(得分:2)

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

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