我正在使用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))
}
答案 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)"
)更轻松地将数字转换为字符串。