Я хочу установить цвет фона NSButton. В инспекторе атрибутов ничего не было, поэтому мне было интересно, есть ли способ сделать это программно?Как установить цвет фона NSButton OSX
ответ
Системные элементы управления должны следить за тем, как выглядит 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;
Это будет работать, только если вы установите кнопку прозрачной, что также приведет к потере ярлыка заголовка. –
Но теперь цвет этой кнопки не изменяется на прессе. – Shizam