Swift 为NSProgressIndicator颜色设置IB内容过滤器
我在这里搜索了Google、Apple Documentation、gitHub等,但找不到任何关于如何使用内容过滤器设置NSProgressIndicator颜色的信息。我想在macOS上做这个 我读到过关于以编程方式修改NSProgressIndicator的文章 但是,我在IB中的NSProgressIndicator上设置了一个内容过滤器,即假颜色。它有两种颜色,颜色1和颜色2。我将颜色1设置为绿色,将颜色2设置为红色 通过将内容过滤器False Color Color 1设置为自定义绿色,我的NSPROGRESS指示器现在默认为绿色。所以,这告诉我它正在从我的内容过滤器中提取颜色,颜色1,但我不知道它是如何做到的 如何以编程方式将NSProgressIndicator的颜色设置为内容过滤器颜色2 我会发布代码说明我是如何做到这一点的,但我甚至不知道如何开始 另一篇帖子提到了设置.appearance,但这让我想到了,这似乎不是我想要的。我很愿意做我的家庭作业并解决这个问题,但我将空手而归,使用IB中设置的内容过滤器 编辑1:进一步调查后,如果执行打印(progressBar.contentFilters),我可以看到IB的内容过滤器中设置的两种颜色,即假颜色设置。这是打印输出:Swift 为NSProgressIndicator颜色设置IB内容过滤器,swift,nsprogressindicator,Swift,Nsprogressindicator,我在这里搜索了Google、Apple Documentation、gitHub等,但找不到任何关于如何使用内容过滤器设置NSProgressIndicator颜色的信息。我想在macOS上做这个 我读到过关于以编程方式修改NSProgressIndicator的文章 但是,我在IB中的NSProgressIndicator上设置了一个内容过滤器,即假颜色。它有两种颜色,颜色1和颜色2。我将颜色1设置为绿色,将颜色2设置为红色 通过将内容过滤器False Color Color 1设置为自定义绿
[<CIFalseColor: 0x6000026039c0>
inputImage=nil
inputColor0=<CIColor 0x600000cc4570 (0 0.976805 0 1) devicergb>
inputColor1=<CIColor 0x600000cc45d0 (1 0.149131 0 1) devicergb>
]
然后在viewDidLoad中:
// Set the values for the filters
darkGreenFilter.setValue(darkGreenCIColor, forKey: "inputColor0")
redFilter.setValue(redCIColor, forKey: "inputColor0")
// Set the progress indicator to dark green
progressBar.contentFilters = [darkGreenFilter]
// Set the progress to zero (removes the colored bar)
progressBar.doubleValue = 0
然后在后面的方法中监视progressBar的状态
if progressBar.doubleValue > 0.75 && !progressBarColorChanged {
progressBar.contentFilters = [redFilter]
progressBarColorChanged = true
}
然后,一旦执行完成,我使用重置方法将其全部放回原处
progressBar.contentFilter = [darkGreen]
progressBar.doubleValue = 0
progressBarColorChanged = false
我正在慢慢地到达那里。有人对如何做得更好,或者我如何消除讨厌的屏幕闪烁有什么建议吗?我找到了闪烁的来源。在我的测试中,在设置redFilter
progressBar.contentFilter=[]之前,我有一行代码;progressBar.contentFilter=[redFilter]
然后再次将progressBar重置为暗绿色过滤器时progressBar.contentFilter=[];progressBar.contentFilter=[darkGreenFilter]
删除这些行后,闪烁消失。对我来说太好了!
progressBar.contentFilter = [darkGreen]
progressBar.doubleValue = 0
progressBarColorChanged = false