动画 UIProgressview 颜色变化
Animate UIProgressview Color Change
我有一个 UIProgressView,我想随着进度的增加更改颜色。例如,如果进度低于 40%,则 progressTintColor 应变为红色,如果高于 40%,则应变为蓝色。
这是我试过的方法
if value <= 40 {
UIView.animate(withDuration: 5) {
self.taskProgressView.progressTintColor = .red
}
} else {
UIView.animate(withDuration: 5) {
self.taskProgressView.progressTintColor = .blue
}
}
现在,颜色从红色变为蓝色,反之亦然,但是,它不会在 5 秒的持续时间内为颜色变化设置动画。
我怎样才能做到这一点?
这可以使用 CAShapeLayers 轻松完成。
你需要三层:
- CAShapeLayer(用于轨道)
- CAShapeLayer(用于进度)
- CAGradientLayer(颜色效果)。
您需要将渐变图层设置为轨道图层的遮罩。
更改值时,您可以使用 CABasicAnimation 来设置进度更改的动画(您应该简单地设置 strokeEnd 属性 的动画)。
我有一个 UIProgressView,我想随着进度的增加更改颜色。例如,如果进度低于 40%,则 progressTintColor 应变为红色,如果高于 40%,则应变为蓝色。
这是我试过的方法
if value <= 40 {
UIView.animate(withDuration: 5) {
self.taskProgressView.progressTintColor = .red
}
} else {
UIView.animate(withDuration: 5) {
self.taskProgressView.progressTintColor = .blue
}
}
现在,颜色从红色变为蓝色,反之亦然,但是,它不会在 5 秒的持续时间内为颜色变化设置动画。
我怎样才能做到这一点?
这可以使用 CAShapeLayers 轻松完成。
你需要三层:
- CAShapeLayer(用于轨道)
- CAShapeLayer(用于进度)
- CAGradientLayer(颜色效果)。
您需要将渐变图层设置为轨道图层的遮罩。
更改值时,您可以使用 CABasicAnimation 来设置进度更改的动画(您应该简单地设置 strokeEnd 属性 的动画)。