5

我正在尝试重新创建 Xcode 中使用的分段控件,其中图像以蓝色色调绘制。

例如在界面生成器中:

界面生成器示例

到目前为止,我有一个自定义NSSegmentedCell覆盖- (void)drawSegment:(NSInteger)segment inFrame:(NSRect)frame withView:(NSView *)controlView,但我被困在如何绘制分段图像(1)与灰色色调和(2)与蓝色色调(如果它被选中)。

此外,看起来图像是使用边框或渐变效果绘制的。当我自己绘制分段图像时,它只是黑色(因为我使用模板图像)。

如何从上方重新创建细分?

4

3 回答 3

10

分段控制 - 具有开启状态外观

使用NSSegmentedControl具有 styleNSSegmentStyleTexturedRounded和 mode的对象NSSegmentSwitchTrackingSelectAny

  • 在工具栏或底栏中放置一个分段控件对象
  • 在检查器的 Attributes 面板中,将样式设置为 Textured Rounded,将模式设置为 Select Any。
  • 确保为控件提供图像(在 Interface Builder 中,从属性检查器的图像组合框中选择图像)。

分段控制 - 开启状态外观


切换式工具栏按钮

单个按钮的实现方式与分段控件的实现方式略有不同:

  • 使用带有名称IconTemplateTemplate附加到其(原始)名称的图像
  • 选择NSTexturedRoundedBezelStyle按钮样式

非分段工具栏按钮

↳ 例如.png,我的资源中有三个图像,MiddlePanelIconTemplate.png、CardPanelIconTemplate.png 和 ReturnPanelIconTemplate.png 使用圆形纹理按钮单元格样式。

OS X 人机界面指南 | 窗框控件

于 2014-08-05T08:37:04.047 回答
3

'L'l 提供的答案对我来说没问题,但是将 IconTemplate 附加到您的图像名称后,它不再适用于 Xcode 7.3。取而代之的是,您必须转到资产目录,选择要使用的图像,然后在右侧面板上选择属性检查器,然后在显示“渲染为”的组合上选择“模板图像”。

在此处输入图像描述

于 2016-10-28T22:12:52.157 回答
0

要以NSButton编程方式(macOS 10.13 / Xcode 9)在打开时使用 Blue Tint 而不是在关闭时(如 Xcode 工具栏中的某些按钮),我执行以下操作:

  1. 将 PNG 添加到具有透明背景和白线图的资产目录(带有黑线的 pdf 也可以)。
  2. 将资产目录中的图像设置为“模板”(设置在右侧边栏中)。
  3. 仅设置 1 个图像(不要使用备用图像)或将不起作用。
  4. bezelstyle = NSTexturedRoundedBezelStyle。
  5. buttontType = NSToggleButton。
  6. yourButton.cell.controlTint = NSBlueControlTint (on) 或 NSDefaultControlTint (off) 根据状态。
于 2018-05-23T18:32:03.257 回答