设置备用图像时 NSButton 失去蓝色高亮效果

NSButton loses blue highlight effect when setting an Alternate image

当我使用样式为 'Round Rect' 的 NSButton 时,键入 'Toggle' 和图像,当状态设置为打开时,图像和标题将很好地呈现为蓝色。

但是,当我也添加备用图像时,这种高光效果就消失了。

有没有简单的方法可以解决这个问题?

我想实现与 Xcode 中 Inspector 顶部的小标签栏图标相同的效果:选中时为蓝色,使用替代图像(稍粗),未选中时为黑色,使用默认图像。

这是预期的行为。如果您不提供自己的备用(活动/点亮/打开)版本,系统只会转换您的模板以应用视觉突出显示。

在等待更优雅的解决方案时,我正在使用此解决方法:

-(IBAction)handleClick:(id)sender
{
    NSButton *button = sender;
    button.image = [NSImage imageNamed:[button.identifier stringByAppendingString:button.state == NSOnState ? @"On" : @""]];
}

我在标准图像和备用图像之间切换代码,使用控件的标识符作为图像的基本名称。有点难看,但它有效。当处于 'On' 状态时,按钮上的图像现在以蓝色突出显示,同时显示(稍微更粗的)备用图像。

要不使用备用图像并获得一个 NSButton (macOS 10.13) 的蓝色色调,当它打开时而不是像 Xcode 工具栏中的某些按钮那样关闭时,我必须执行以下操作:

  1. 资产目录中的 png 透明背景和白色线条图。
  2. 资产目录中的 png 设置为呈现为 "template"(请参阅右侧栏)。
  3. 只设置一张图片。不要使用替代图像,否则无效。
  4. bezelstyle = NSTexturedRoundedBezelStyle.
  5. buttontType = NSToggleButton.

我还在状态的按钮操作处理程序中更改了 controlTint。