如this answer中所述,可以使用內容過濾器(在此特定情況下,「色調調整」內容過濾器)更改例如進度欄的顏色。以編程方式在Swift中設置內容過濾器3
看來你只能在Xcode的Interface Builder中實現這個功能;不過,我想以編程方式啓用/禁用內容過濾器。因此,例如,我想啓用色調調整內容過濾器,以便進度條變成綠色,稍後在函數中禁用它,以便返回藍色。這可能嗎?
如this answer中所述,可以使用內容過濾器(在此特定情況下,「色調調整」內容過濾器)更改例如進度欄的顏色。以編程方式在Swift中設置內容過濾器3
看來你只能在Xcode的Interface Builder中實現這個功能;不過,我想以編程方式啓用/禁用內容過濾器。因此,例如,我想啓用色調調整內容過濾器,以便進度條變成綠色,稍後在函數中禁用它,以便返回藍色。這可能嗎?
您可以使用進度視圖的progressTintColor屬性。
progressView.progressTintColor = .green
我得到錯誤「類型爲'NSProgressIndicator'的值沒有成員'progressTintColor' 「 –
對不起,我以爲你正在使用progressView –
沒關係。我正在使用進度條指示器。 –
搶跑後,好像答案是真正簡單:
// Need to set this in code. The settings in IB don't carry over when
// I change the contentFilters
progressIndicator.minValue = 0
progressIndicator.maxValue = 100
progressIndicator.doubleValue = 50
let hueAdjust = CIFilter(name: "CIHueAdjust", withInputParameters: ["inputAngle": NSNumber(value: 1.7)])!
progressIndicator.contentFilters = [hueAdjust]
這個答案是MacOS和'NSView'文件。 https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreAnimation_guide/SettingUpLayerObjects/SettingUpLayerObjects.html我嘗試了幾件事情 - 鏈接到QuartzCore和Quartz,添加一個nib文件,無論如何 - 對於iOS項目未找到「效果檢查器」。對於它所做的macOS項目。但是,你應該能夠(a)訪問IB中的軌道色調,或者(b)完全按照代碼而不是IB來執行。 – dfd
嘿,對不起,如果我不清楚(我只是把它作爲標籤),但我* *實際上是在談論macOS。但是,我可以嘗試顯示兩個看起來不同的進度條,並隱藏其中一個或另一個。我不是一個很好的解決方案,但它會工作,據我所知 –
使用Xcode 8.3我創建了一個非常簡單的macOS項目(Cocoa應用程序),打開故事板,點擊視圖控制器和效果檢查按鈕(最後一個右)在那裏。點擊「過濾器」下拉菜單上的「+」按鈕給了我很多選擇,包括「色調調整」。那是你無法找到的東西嗎? – dfd