我想设置NSButton的背景颜色。属性检查器中没有任何内容,所以我想知道是否有任何方法可以通过编程方式进行操作?
答案 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;