Изменить цвет фона 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
}
Другие вопросы по тегам