如何使用Xcode等蓝色色调绘制分段控件?

时间:2014-07-24 07:45:16

标签: xcode cocoa nssegmentedcontrol

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

例如在Interface Builder中:

Interface Builder example

到目前为止,我有一个自定义NSSegmentedCell覆盖- (void)drawSegment:(NSInteger)segment inFrame:(NSRect)frame withView:(NSView *)controlView,但我仍然坚持如何用灰色色调绘制段图像(1),如果是蓝色色调则用蓝色色调绘制(2)被选中。

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

如何从上方重新创建片段?

3 个答案:

答案 0 :(得分:10)

分段控制 - 具有通态外观

使用样式为NSSegmentedControl的{​​{1}}对象和模式NSSegmentStyleTexturedRounded

  • 在工具栏或底栏中放置分段控制对象
  • 在检查器的“属性”窗格中,将样式设置为“纹理圆角”,将模式设置为“选择任意”。
  • 确保为控件提供图像(在Interface Builder中,从“属性”检查器的“图像”组合框中选择图像)。

Segmented Control - on-state appearance


切换式工具栏按钮

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

  • 使用名称为NSSegmentSwitchTrackingSelectAnyIconTemplate附加到其(原始)名称的图片
  • 选择Template按钮样式

Non-Segmented Toolbar Buttons

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

OS X Human Interface Guidelines | Window-Frame Controls

答案 1 :(得分:3)

我提供的答案对我来说没问题,但是将IconTemplate附加到你的图像名称上它不再适用于Xcode 7.3。而不是那样,你必须转到你的资产目录,选择你想要使用的图像,在右边的面板上你必须选择属性检查器,然后在组合中选择'渲染为'选择模板图像'。

enter image description here

答案 2 :(得分:0)

要在开启时使用蓝色色调以编程方式(macOS 10.13 / Xcode 9)创建Content-type(key) application/json (value) Content-type(key) application/xml (value) ,而不是在关闭时(如Xcode工具栏中的某些按钮),我执行以下操作:

  1. 将PNG添加到具有透明背景和白线图的资产目录(带黑线的pdf也可用)。
  2. 在资产目录中设置图像以呈现为"模板" (设置在右侧边栏)。
  3. 仅设置1张图像(不使用替代图像)或不起作用。
  4. bezelstyle = NSTexturedRoundedBezelStyle。
  5. buttontType = NSToggleButton。
  6. 根据州,
  7. yourButton.cell.controlTint = NSBlueControlTint(on)或NSDefaultControlTint(off)。