how to set background color of NSButton OSX

[亡魂溺海] 提交于 2019-12-07 04:26:34

问题


I want to set the background color of NSButton.There was nothing in the attribute inspector so i was wondering if there was any way to do it programmatically?


回答1:


System controls will need to follow the Apple look&feel, so you cannot easily change the background colour. If you want to accomplish this, you'll need to subclass NSButton and overwrite the drawRect: method. The downside is that you'll also need to handle the text drawing, and possibly different rendering based on button state.

Edit. Actually, you'll need to subclass the NSButtonCell class for the drawing stuff, more info can be found here: https://developer.apple.com/library/prerelease/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSButtonCell_Class/index.html#//apple_ref/doc/uid/20000093-SW15




回答2:


Other than subclassing you can use layer approach like this

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

or you can make an image with that specified color and apply that image to the Button.




回答3:


I would recommend against cell subclassing. Cells are deprecated and on the way out.

NSButton does allow you to set an image without a bezel.

Subclassing NSView or NSControl, doing custom drawing and tracking states of mouse events and application active/window active to draw all the custom states is as effective if not better.

Cells don't know about AutoLayout so you should be careful if go to cell land.




回答4:


Use the background layer of the NSButton like so:

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


来源:https://stackoverflow.com/questions/29387102/how-to-set-background-color-of-nsbutton-osx

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!