我使用动画指定一个提示,以帮助与延迟的交互使用以下:
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!)