我目前遇到的问题是removeAllAnimations()函数在我的自定义UICollectionViewCell类中不起作用。
数组progressBar []包含多个UIProgressViews。我希望progressBar在调用某些内容时停止动画。但是现在它只是继续动画。 我该如何解决这个问题?
执行实际动画的第一个函数
@objc func updateProgress() {
if visibleCell == "TRUE" {
DispatchQueue.main.async {
if self.index < self.imagesTest.count /*images.count*/ {
CATransaction.begin()
CATransaction.setCompletionBlock {
self.index += 1
self.updateProgress()
}
UIView.animate(withDuration: self.time, delay: 0, options: .curveLinear, animations: {
self.progressBar[self.index].setProgress(1.0, animated: true)
})
CATransaction.commit()
}
}
}
}
应停止正在进行的动画的第二个功能
func stopUpdating() {
progressBar[index].layer.removeAllAnimations()
}
答案 0 :(得分:1)
您可以使用单行代码
来实现这一目标替换您的代码
func stopUpdating() {
progressBar[index].layer.removeAllAnimations()
}
使用
func stopUpdating() {
progressBar[index].layer.speed = 0
}
希望它对你有所帮助