You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS 15系统UIProgressView进度动画时tintColor透明度异常如何解决?

问题根因

这是iOS 15系统对UIProgressView的默认行为变更:系统会在进度值较低时自动降低进度条填充色的透明度,仅在进度接近1时恢复为完全不透明的设置色,低版本iOS无此逻辑,因此你在iOS 12.4上运行表现正常。

解决方案

通过设置纯色的progressImage替代tintColor/progressTintColor配置,可以绕开系统自动调整透明度的逻辑,是兼容性最好的修复方案:

  1. 先添加生成纯色图片的扩展:
extension UIImage {
    static func makeSolidColor(_ color: UIColor, size: CGSize = CGSize(width: 1, height: 1)) -> UIImage {
        let renderer = UIGraphicsImageRenderer(size: size)
        return renderer.image { context in
            color.setFill()
            context.fill(CGRect(origin: .zero, size: size))
        }
    }
}
  1. 替换原有的进度条颜色配置:
// 注释掉原有的tintColor/progressTintColor赋值
// progressView.tintColor = .red
// progressView.trackTintColor = .gray

// 改为设置纯色图片
progressView.progressImage = UIImage.makeSolidColor(.red)
progressView.trackImage = UIImage.makeSolidColor(.gray)

修改后无论进度值为多少,进度条颜色都会保持你设置的纯色效果,不会出现透明度变化的异常。

内容的提问来源于stack exchange,提问作者V D Purohit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 20:06:04