Я хочу установить цвет фона NSButton. В инспекторе атрибутов ничего не было, поэтому мне было интересно, есть ли способ сделать это программно?
как установить цвет фона NSButton OSX
Ответы (4)
Системные элементы управления должны соответствовать внешнему виду 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
Помимо подкласса, вы можете использовать подход уровня, подобный этому
NSButton *button = [[NSButton alloc] initWithFrame:frame];
[superView addSubView:button];
[button setWantsLayer:YES];
button.layer.backgroundColor = [NSColor blueColor].CGColor;
или вы можете создать изображение с указанным цветом и применить это изображение к кнопке.
Я бы рекомендовал не создавать подклассы ячеек. Ячейки устарели и находятся на выходе.
NSButton позволяет установить изображение без рамки.
Создание подклассов NSView или NSControl, выполнение пользовательского рисования и отслеживание состояний событий мыши и активное/активное окно приложения для рисования всех пользовательских состояний столь же эффективно, если не лучше.
Ячейки не знают об AutoLayout, поэтому вам следует быть осторожным, если вы переходите на ячейку.
Используйте фоновый слой NSButton следующим образом:
buttonName.layer.backgroundColor = NSColor.redColor.CGColor;