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
        }
    }
上一篇下一篇

猜你喜欢

热点阅读