更改NSProgressIndicator颜色的最佳方法是,有一种更简单的方法,而不仅仅是将其子类化,然后自己绘制整个组件吗?
基本上我想要的是拥有一个类似的组件,但能够改变条形的颜色。
我试图谷歌这个,但所有的问题都已经过时了,并没有真正关注我正在研究的10.10 OS X版本。还检查了cocoa控件,并且只找到了1个用于过时的OS X版本的组件。
答案 0 :(得分:11)
您可以直接在Interface Builder中使用Quartz滤镜(例如色调调整)。这比预期更好。
它在效果检查器中。在"内容过滤器"你可以添加" Hue Adjust"
答案 1 :(得分:0)
更改NSProgressIndicator
使用setControlTint:方法的颜色。如果要设置自定义颜色,则必须手动绘制此类控件。但是,您应该使用系统颜色来保持整个系统的这种控制一致。
答案 2 :(得分:0)
对于Swift,方法名称为controlTint
。
progressIndicator = NSProgressIndicator(frame: .......
progressIndicator.controlTint = .blueControlTint
答案 3 :(得分:0)
使用“ CIFalseColor”过滤器可获得白色等。
let colorFilter = CIFilter(name: "CIFalseColor")!
colorFilter.setDefaults()
colorFilter.setValue(color1, forKey: "inputColor0")
colorFilter.setValue(color2, forKey: "inputColor1")
proggressBar?.contentFilters = [colorFilter]
答案 4 :(得分:0)
您可以使用proggressBar.appearance = NSAppearance(named.vibrantLight)//对于“黑色”指示符,它是浅色或鲜艳的黑色
答案 5 :(得分:0)
根据 Paxos 对 Interface builder 的回答,这是我能够以编程方式做到这一点的方式:
let progress = NSProgressIndicator()
progress.contentFilters = [CIFilter(name: "CIHueAdjust", parameters: ["inputAngle": 4])!]
这会使条形变绿。我通过查看 Main.storyboard diff 得到了这个:
<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>