我有一个函数可以开始播放异步运行的动画(在后台)。使用完成处理程序(见下文)无限期地调用此动画。有没有办法在按下另一个按钮时关闭此功能?
这是我的代码:
func showAnimation() {
UIView.animate(withDuration: 1, animations: {
animate1(imageView: self.Anime, images: self.animation1)
}, completion: { (true) in
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
self.showAnimation() // replay first showAnimation
}
})
}
然后按下另一个按钮,我们关闭上述功能
showAnimation().stop();
谢谢
最佳答案
您可以向类中添加一个属性,作为指示动画是否应该运行的标志。
var runAnimation = true
func showAnimation() {
if !runAnimation { return }
UIView.animate(withDuration: 1, animations: {
animate1(imageView: self.Anime, images: self.animation1)
}, completion: { (true) in
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
if runAnimation {
self.showAnimation() // replay first showAnimation
}
}
})
}
然后在按钮处理程序中停止动画,您只需执行以下操作:
runAnimation = false
请注意,这不会停止当前运行的 1 秒动画。这只会阻止任何更多的动画。
关于ios - 如何停止函数在 Swift 3.0 中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48085608/