设置备用图像时,NSButton会丢失蓝色高光效果

时间:2015-12-21 15:01:49

标签: objective-c xcode swift macos nsbutton

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

然而,当我还添加一个替代图像时,这个高光效果消失了。

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

我希望获得与Xcode中Inspector顶部的小标签栏图标相同的效果:选中时为蓝色,使用备用图像(稍大胆),未选中时为黑色,使用默认图像。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

要不使用备用图像并在ON时使用蓝色色调获取NSButton(macOS 10.13),而不像Xcode工具栏中的某些按钮那样使用OFF,我必须执行以下操作:

  1. png在资产目录中,带有透明背景和白线图。
  2. 资产目录中的
  3. png设置为"模板" (见右侧边栏)。
  4. 仅设置1张图片。不要使用替代图像,也不要使用它。
  5. bezelstyle = NSTexturedRoundedBezelStyle。
  6. buttontType = NSToggleButton。
  7. 我还在状态按钮动作处理程序中更改controlTint。