验证码倒计时

//按钮调用的函数
func msgCodeAction(_ button:UIButton){ // 定义需要计时的时间 var timeCount = 60 // 在global线程里创建一个时间源 let codeTimer = DispatchSource.makeTimerSource(queue: DispatchQueue.global()) // 设定这个时间源是每秒循环一次,立即开始 codeTimer.scheduleRepeating(deadline: .now(), interval: .seconds(1)) // 设定时间源的触发事件 codeTimer.setEventHandler(handler: { // 每秒计时一次 timeCount = timeCount - 1 // 时间到了取消时间源 if timeCount <= 0 { codeTimer.cancel() } // 返回主线程处理一些事件,更新UI等等 DispatchQueue.main.async { if timeCount <= 0 { button.setTitle("获取验证码", for: UIControlState.normal) button.isUserInteractionEnabled = true } else { button.setTitle("\(timeCount) s", for: UIControlState.normal) button.isUserInteractionEnabled = false } } }) // 启动时间源 codeTimer.resume() }

 

posted @ 2017-06-09 11:28  代码将知道什么是痛苦  阅读(180)  评论(0编辑  收藏  举报