如何设置NSButton OSX的背景颜色

Zei*_*ist 5 macos cocoa nsbutton

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

Cri*_*tik 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


She*_*eny 5

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

NSButton *button = [[NSButton alloc] initWithFrame:frame];
[superView addSubView:button];
[button setWantsLayer:YES];
button.layer.backgroundColor = [NSColor blueColor].CGColor;
Run Code Online (Sandbox Code Playgroud)

或者您可以使用指定的颜色制作图像并将该图像应用于Button.


uch*_*aka 5

我建议不要细胞亚类化.单元格已弃用且正在退出.

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

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

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