ios - 如何停止函数在 Swift 3.0 中运行

标签 ios swift uiviewanimation

我有一个函数可以开始播放异步运行的动画(在后台)。使用完成处理程序(见下文)无限期地调用此动画。有没有办法在按下另一个按钮时关闭此功能?

这是我的代码:

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/

相关文章:

ios - 快速结帐按钮而不是 iPhone 中的使用 paypal 按钮付款

android - iOS开发中的Android权限相当于什么?

SwiftUI 使用枚举构建列表

ios - 在不同 VC 之间移动时管理 UIView 动画

ios - 在iOS中,UIView动画和Core动画有什么区别?

java - 将主人的地理位置分享给奴隶的最佳方式是什么?

ios - 如何更改生成 View 中的约束?

swift - 如何摆脱 Swift 闭包中的 $0 ?

swift - 如何访问 SwiftUI Canvas 中的像素数据

ios - 同时运行两个动画