Swift基于GCD实现的倒计时功能
2019-03-28 本文已影响0人
一个七
开发环境
1.编译器版本:10.1
2.sdk版本 12.1
3.swift 版本 4.2
实现代码
var timeout = 60
let queue = DispatchQueue.global()
let timer = DispatchSource.makeTimerSource(flags: .init(rawValue: 0), queue: queue)
timer.schedule(deadline: .now(), repeating: .milliseconds(1000))
timer.setEventHandler {
timeout = timeout - 1
if timeout < 0 {
DispatchQueue.main.async {
self.smbitBt?.isEnabled = true
self.smbitBt?.setTitle("重置", for: .normal)
}
timer.cancel()
}else{
DispatchQueue.main.async {
self.smbitBt?.isEnabled = false
self.smbitBt?.setTitle("\(timeout)s", for: .normal)
}
}
}
if #available(iOS 10.0, *) {
timer.activate()
} else {
timer.resume()
// Fallback on earlier versions
}
}