iOS 13 上的 UIProgressView 没有动画进度
UIProgressView not animating progress on iOS 13
我没有看到 UIProgressView
的动画 Xcode 11.0/Swift 5/iOS 13:
private let timerProgressView: UIProgressView = {
let timerProgressView = UIProgressView()
timerProgressView.progressTintColor = white
timerProgressView.trackTintColor = .black
timerProgressView.setProgress(1.0, animated: false)
return timerProgressView
}()
private func triggerProgressView() {
UIView.animate(withDuration: viewModel.timeLimit, delay: 0.0, options: .curveLinear, animations: { [weak self] in
self?.timerProgressView.setProgress(0.0, animated: true)
}, completion: nil)
}
此代码适用于 iOS <12 但不适用于 iOS 13。我错过了什么吗?
你试过这样做吗? :
self?.timerProgressView.setProgress(0.0)
UIView.animate(withDuration: viewModel.timeLimit, delay: 0.0, options: .curveLinear, animations: { [weak self] in
self?.timerProgressView.layoutIfNeeded()
}, completion: nil)
我们也遇到过这个问题,经过大约一个小时的努力,我们想出了一个解决方法,看起来这是一个错误。这很荒谬,但是 将进度设置为 0.0001 而不是 0.0 就可以了 。
progressView.progress = 0.0001
UIView.animate(withDuration: duration,
delay: 0.0, options: [.curveLinear, .beginFromCurrentState, .preferredFramesPerSecond60],
animations: { progressView.layoutIfNeeded() },
completion: nil)
我没有看到 UIProgressView
的动画 Xcode 11.0/Swift 5/iOS 13:
private let timerProgressView: UIProgressView = {
let timerProgressView = UIProgressView()
timerProgressView.progressTintColor = white
timerProgressView.trackTintColor = .black
timerProgressView.setProgress(1.0, animated: false)
return timerProgressView
}()
private func triggerProgressView() {
UIView.animate(withDuration: viewModel.timeLimit, delay: 0.0, options: .curveLinear, animations: { [weak self] in
self?.timerProgressView.setProgress(0.0, animated: true)
}, completion: nil)
}
此代码适用于 iOS <12 但不适用于 iOS 13。我错过了什么吗?
你试过这样做吗? :
self?.timerProgressView.setProgress(0.0)
UIView.animate(withDuration: viewModel.timeLimit, delay: 0.0, options: .curveLinear, animations: { [weak self] in
self?.timerProgressView.layoutIfNeeded()
}, completion: nil)
我们也遇到过这个问题,经过大约一个小时的努力,我们想出了一个解决方法,看起来这是一个错误。这很荒谬,但是 将进度设置为 0.0001 而不是 0.0 就可以了 。
progressView.progress = 0.0001
UIView.animate(withDuration: duration,
delay: 0.0, options: [.curveLinear, .beginFromCurrentState, .preferredFramesPerSecond60],
animations: { progressView.layoutIfNeeded() },
completion: nil)