更改 NSProgressIndicator 的颜色的最佳方法是什么,有没有比仅将其子类化然后自己绘制整个组件更简单的方法?
基本上我想要做的是有一个类似的组件,但能够改变栏的颜色。
我试图用谷歌搜索,但所有的问题都已经过时了,并且并不真正关心我正在开发的 10.10 OS X 版本。还检查了可可控件,只发现了 1 个用于过时 OS X 版本的组件。
更改 NSProgressIndicator 的颜色的最佳方法是什么,有没有比仅将其子类化然后自己绘制整个组件更简单的方法?
基本上我想要做的是有一个类似的组件,但能够改变栏的颜色。
我试图用谷歌搜索,但所有的问题都已经过时了,并且并不真正关心我正在开发的 10.10 OS X 版本。还检查了可可控件,只发现了 1 个用于过时 OS X 版本的组件。
要更改NSProgressIndicator
使用setControlTint:方法的颜色。如果要设置自定义颜色,则必须手动绘制此类控件。但是,您应该使用系统颜色来使这种控制在整个系统中保持一致。
对于 Swift,方法名称是controlTint
.
progressIndicator = NSProgressIndicator(frame: .......
progressIndicator.controlTint = .blueControlTint
使用“CIFalseColor”过滤器获得白色等。
let colorFilter = CIFilter(name: "CIFalseColor")!
colorFilter.setDefaults()
colorFilter.setValue(color1, forKey: "inputColor0")
colorFilter.setValue(color2, forKey: "inputColor1")
proggressBar?.contentFilters = [colorFilter]
您可以使用 proggressBar.appearance = NSAppearance(named: .vibrantLight) // 这是“黑色”指标的浅色或充满活力的深色
根据 Paxos 对 Interface builder 的回答,这就是我能够以编程方式执行此操作的方式:
let progress = NSProgressIndicator()
progress.contentFilters = [CIFilter(name: "CIHueAdjust", parameters: ["inputAngle": 4])!]
这将使栏变成绿色。我通过查看 Main.storyboard 差异得到了这个:
<progressIndicator maxValue="100" doubleValue="50" style="bar" translatesAutoresizingMaskIntoConstraints="NO" id="NIr-vo-obX">
<rect key="frame" x="3" y="22" width="210" height="20"/>
+ <contentFilters>
+ <ciFilter name="CIHueAdjust">
+ <configuration>
+ <real key="inputAngle" value="4"/>
+ <null key="inputImage"/>
+ </configuration>
+ </ciFilter>
+ </contentFilters>
</progressIndicator>