Swift - RemoveAllAnimations()在UICollectionViewCell类中不起作用

时间:2017-12-05 10:55:46

标签: ios swift xcode animation

我目前遇到的问题是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()
}

1 个答案:

答案 0 :(得分:1)

您可以使用单行代码

来实现这一目标

替换您的代码

func stopUpdating() {
    progressBar[index].layer.removeAllAnimations()
}

使用

func stopUpdating() {
   progressBar[index].layer.speed = 0 
}

希望它对你有所帮助