UIProgressView 在 iOS 13 上不能动画显示进度

7

在 Xcode 11.0 / Swift 5 / iOS 13 中,我无法看到 UIProgressView 的动画:

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上无法正常运行。我是否遗漏了什么?


同样的问题,请分享任何解决方案 :( - ueen
谢谢,但这太荒谬了,我已经放弃了ProgressView,采用了一个明智的替代方案,欢迎查看https://github.com/ueen/SensibleProgressView :) - ueen
2个回答

5

我们也遇到了这个问题,经过约一个小时的努力我们想出了一个解决方法,看起来这是一个 bug。虽然很荒谬,但是将进度设置为 0.0001 而不是 0.0 就能解决问题

progressView.progress = 0.0001
UIView.animate(withDuration: duration,
                   delay: 0.0, options: [.curveLinear, .beginFromCurrentState, .preferredFramesPerSecond60],
                   animations: { progressView.layoutIfNeeded() },
                   completion: nil)

1
你试过像这样做吗?:

self?.timerProgressView.setProgress(0.0) 
UIView.animate(withDuration: viewModel.timeLimit, delay: 0.0, options: .curveLinear, animations: { [weak self] in
    self?.timerProgressView.layoutIfNeeded() 
}, completion: nil)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接