我根據數字影像創建了一個進度視圖,如下面的代碼所示。
let view = UIView()
view.backgroundColor = .clear
let progressView = UIProgressView(frame: CGRect(x: 0, y: 0, width: frameOfParentView.width/3 - 8, height: 30))
progressView.progressViewStyle = .default
progressView.progress = 0.0
progressView.tintColor = .red
progressView.trackTintColor = .gray
progressView.layoutIfNeeded()
view.addSubview(progressView)
self.arrayOfProgrssView.append(progressView)
正如您在 gif 中看到的,在起點 tintColor alpha 稍微少一點,但是當它緊張到 100% 時,它是完全紅色的。
我還嘗試使用以下代碼:-
progressView.progressTintColor = .red
但沒有得到預期的結果。
要執行影片,
DispatchQueue.main.asyncAfter(deadline: .now() 0.001) {
UIView.animate(withDuration: self.animationInMS) {
progressView.setProgress(1, animated: true)
}
}
progressView.layoutIfNeeded()
iOS 15 中的問題:-

正如您在下面看到的其他顏色的結果。

注意:- 我已經在 iOS 12.4 中檢查過它作業正常,正如您在影像中看到的那樣。

請讓我知道我這邊有什么需要。
提前致謝
uj5u.com熱心網友回復:
這似乎是 alpha 值與完成百分比匹配的“新行為”——盡管經過一些快速搜索,我沒有找到任何關于它的檔案。
一種解決方法:設定.progressImage而不是色調顏色。
因此,使用您喜歡的代碼生成純色影像,例如:
extension UIImage {
public static func withColor(_ color: UIColor, size: CGSize = CGSize(width: 1, height: 1)) -> UIImage {
let format = UIGraphicsImageRendererFormat()
format.scale = 1
let image = UIGraphicsImageRenderer(size: size, format: format).image { rendererContext in
color.setFill()
rendererContext.fill(CGRect(origin: .zero, size: size))
}
return image
}
}
然后,而不是:
progressView.tintColor = .red
用:
let img = UIImage.withColor(.red)
progressView.progressImage = img
沒有經過全面測驗,但為了避免更改現有代碼的需要,您也可以嘗試:
extension UIProgressView {
open override var tintColor: UIColor! {
didSet {
let img = UIImage.withColor(tintColor)
progressImage = img
}
}
}
現在您可以保留現有的 progressView.tintColor = .red
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/356467.html
上一篇:從字串中獲取重復子字串的范圍
下一篇:FlutterIOS黑屏
