swift – 停止dispatch_after

前端之家收集整理的这篇文章主要介绍了swift – 停止dispatch_after前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用动画指定一个提示,以帮助与延迟的交互使用以下:
let delay = 1.8 * Double(NSEC_PER_SEC)
    let time = dispatch_time(DISPATCH_TIME_NOW,Int64(delay))
    dispatch_after(time,dispatch_get_main_queue()) {
        //call the method which have the steps after delay.

        self.rain.alpha = 0

        UIView.animateWithDuration(5,animations: {

            self.rain.alpha = 1

        })

        self.tip.startAnimating()

    }

但是,如果在动画开始之前用户触摸屏幕,我需要停止此延迟过程.

iOS 8和OS X优胜美地引入了dispatch_block_cancel,允许您在开始执行之前取消它们

您在类中声明一个变量,如下所示:

var block: dispatch_block_t?

Init块变量并在dispatch_after中提供:

block = dispatch_block_create(DISPATCH_BLOCK_INHERIT_QOS_CLASS) {
  print("I executed")
}
let time: dispatch_time_t = dispatch_time(DISPATCH_TIME_NOW,Int64(5 * NSEC_PER_SEC))
dispatch_after(time,dispatch_get_main_queue(),block!)

之后,您可以取消它如下:

dispatch_block_cancel(block!)
原文链接:https://www.f2er.com/swift/318944.html

猜你在找的Swift相关文章