我在一个mac应用程序中有一个NSButton,它的颜色我想以编程方式改变,但我尝试的任何东西似乎都没有用.我试图在NSButtonCell上创建一个输出并在那里设置背景颜色,但这也不起作用.任何代码片段都会有所帮助.
假设所有东西都挂在IB中,用于无边界按钮.
// *.h file IBOutlet NSButton* myButton; // *.m file [[myButton cell] setBackgroundColor:[NSColor redColor]];
请注意setBackgroundColor文档:
"只有在绘制无边框按钮时才使用背景颜色."
如果这不适合你,那么你需要覆盖NSButton并自己实现绘图.
祝好运.
标准的Aqua(药丸形)按钮由系统绘制.它们没有背景颜色.实际上,它们由Cocoa拼接在一起形成连贯按钮图像的图像组成.因此Cocoa无法根据您的喜好重新着色图像.只有默认按钮(将Return设置为其等效键的按钮)将具有蓝色脉冲背景.
你想要做的事情将涉及子类化NSButtonCell
和自己的绘图.如果您想重新着色按钮图像以获得所需的效果,您可以使用优秀的主题公园实用程序来提取Apple按钮图像的副本并使用它们.我承认自己这样做是为了"窃取"某些无法访问的界面元素,例如iTunes中的滚动条.
这是另一种可能的方法:
let button = NSButton() button.title = "" button.bezelStyle = .texturedSquare button.isBordered = false //Important button.wantsLayer = true button.layer?.backgroundColor = NSColor.red.cgColor
我创建了一个NSButton
子类FlatButton
,它使得从Interface Builder更改按钮背景颜色,文本颜色,图标颜色,边框和其他类型的样式变得非常容易:
https://github.com/OskarGroth/FlatButton