实时更新ProgressBar / UILabel

时间:2018-11-25 16:04:16

标签: swift

我正在使用Lottie动画库,并尝试使用进度条或标签中0-1的数字显示动画的进度,但是会实时更新。

我尝试在按钮或滑动上更改这些值,效果很好。但是我不知道如何在没有用户交互的情况下实时更新值。

我也尝试了DisptachQueue,但是它不起作用:/我意识到这可能有点基础,但是我尝试在多个网站上寻找答案都没有用。

Lottie具有“ animationProgress”属性,因此我的想法是将该信息发送到酒吧或标签。

Tnx!

DispatchQueue.main.async {

// Modify progress value of a progress bar. ("animationProgress returns CGFloat")
  self.progressBar.progress = Float(self.animationView.animationProgress)

// Returning same value but as String to the label.
  self.progressLabel.text = 
  String(Float(self.animationView.animationProgress))
}

1 个答案:

答案 0 :(得分:0)

您的代码正在从self.animationView.animationProgress中读取一次。在Lottie中,设置此属性可确定动画的长度。通常,这是通过scrollViewDidScroll或类似的委托方法来计算的。

因此,您需要在设置Lottie animationProgress的同时设置进度条进度。

例如:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let progress = scrollView.contentOffset.x / scrollView.contentSize.width

    animationView.animationProgress = progress
    progressBar.progress = Float(progress)
    progressLabel.text = "\(progress)"
}

请注意,您可以使用字符串插值(例如"\(progress)")更轻松地将数字转换为字符串。