2015-04-01 41 views
3

的背景颜色我想设置NSButton.There的背景颜色是没有在属性检查器中,所以如果有任何办法做到这一点编程我不知道?如何设置NSButton OSX

回答

5

系统控制将需要按照苹果看起来&的感觉,所以你不能轻易改变的背景颜色。如果你想完成这个,你需要继承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

3

比继承你可以使用这样

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

层的方法也可以使一个其他具有该指定颜色的图像并将该图像应用于按钮。

+1

但现在该按钮的颜色不会在印刷机上改变。 – Shizam 2016-11-04 16:25:40

3

我会建议针对细胞亚类。单元已被弃用,并在出路。

NSButton允许您设置没有挡板的图像。

子类的NSView或的NSControl,做自定义绘制和跟踪鼠标事件和应用主动/主动窗口绘制所有的自定义状态的状态是,如果没有更好的效果。

细胞不知道AutoLayout,所以你应该小心,如果去细胞的土地。

2

使用NSButton的背景层,像这样:

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

只有当您将该按钮设置为透明时才会起作用,这也会导致您丢失标题标签。 – 2016-06-13 01:00:12