我发现了这个,它在我当地的效果很好
https://medium.com/academy-poa/how-to-create-a-uiprogressview-with-gradient-progress-in-swift-2d1fa7d26f24
1.Extent UIImage
extension UIImage {
public convenience init?(bounds: CGRect, colors: [UIColor], orientation: GradientOrientation = .horizontal) {
let gradientLayer = CAGradientLayer()
gradientLayer.frame = bounds
gradientLayer.colors = colors.map({ $0.cgColor })
if orientation == .horizontal {
gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.5);
gradientLayer.endPoint = CGPoint(x: 1.0, y: 0.5);
}
UIGraphicsBeginImageContext(gradientLayer.bounds.size)
gradientLayer.render(in: UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
guard let cgImage = image?.cgImage else { return nil }
self.init(cgImage: cgImage)
}
}
public enum GradientOrientation {
case vertical
case horizontal
}
- 创建自己的渐变进度条
导入 UIKit
class GradientProgressView: UIProgressView {
@IBInspectable var firstColor: UIColor = UIColor.white {
didSet {
updateView()
}
}
@IBInspectable var secondColor: UIColor = UIColor.black {
didSet {
updateView()
}
}
func updateView() {
if let gradientImage = UIImage(bounds: self.bounds, colors: [firstColor, secondColor]) {
self.progressImage = gradientImage
}
}
}
在你的课上
让 progressView = GradientProgressView(progressViewStyle: .bar)
progressView.firstColor = UIColor(red: 0.949, green: 0.478, blue: 0.329, alpha: 1) //your own color
progressView.secondColor = UIColor(red: 0.631, green: 0.329, blue: 0.949, alpha: 1) //your own color
progressView.updateView()