验证码倒计时
//按钮调用的函数
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() }