在突出显示时更改NSButton的背景颜色

cob*_*bal 6 macos cocoa 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];
Run Code Online (Sandbox Code Playgroud)

这将在单击时将背景更改为默认窗口背景颜色.如果我删除NSChangeBackgroundCellMask背景消失.

有没有一种简单的方法可以为背景设置不同的颜色,或者这是否需要我继承NSButton?

cob*_*bal 9

最后,我通过子类化NSButtonCell和覆盖来解决它

- (void) highlight:(BOOL)flag withFrame:(NSRect)cellFrame inView:(NSView*)controlView
Run Code Online (Sandbox Code Playgroud)

进行我想要的更改(controlView.layer.backgroundColor基于更改flag)


Neh*_*eha 2

您将需要子类化您的NSButton并覆盖其mouseDown:mouseUp:事件,更改您在这些事件中的颜色NSButton