Изменить цвет фона NSButton при выделении
У меня есть NSButton, который я хочу иметь другой цвет фона, когда он выделен, чем когда он не выделен (прозрачный на не выделен, если это имеет какое-то значение).
В настоящее время у меня есть следующий код
[view setWantsLayer:YES];
NSButton* button = [[NSButton alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
[button setBordered:FALSE];
[(NSButtonCell*)[button cell] setHighlightsBy:NSChangeBackgroundCellMask];
[view addSubview:button];
Это изменит фон на цвет фона окна по умолчанию при нажатии. Если я удалю NSChangeBackgroundCellMask
фон исчезает.
Есть ли простой способ, которым я могу иметь другой цвет для фона, или это требует от меня подкласса NSButton?
3 ответа
В конце концов, я решил это путем создания подклассов NSButtonCell
и перезаписывать
- (void) highlight:(BOOL)flag withFrame:(NSRect)cellFrame inView:(NSView*)controlView
внести изменения, которые я хотел (изменение controlView.layer.backgroundColor
основанный на flag
)
Вам нужно будет подкласс NSButton
и переопределить его mouseDown:
а также mouseUp:
события, изменить цвет вашего NSButton
в этих событиях.
Быстрая версия ответа Коббала:
override func highlight(_ flag: Bool, withFrame cellFrame: NSRect, in controlView: NSView) {
//do nothing, to disable highlight
}