1. 程式人生 > >【30-swift-projects-in-30-days】swift 5 學習 02.Watch'sDemo

【30-swift-projects-in-30-days】swift 5 學習 02.Watch'sDemo

【Swift 5 學習】在 02.Watch'sDemo 專案中主要學習的是SnapKit的進一步使用和定時器Timer的使用。

1.Timer的使用

timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(time), userInfo: nil, repeats: true)

//開始計時器
timer.fire()
//暫停
timer.fireDate = Date.distantFuture
//繼續
timer.fireDate = NSDate.init() as Date
timer.fireDate = Date.distantPast
//消除計時器(頁面釋放是必須呼叫這個方法,不讓會讓頁面和定時器不會釋放)
timer.invalidate()
//滑動timer失效是新增
RunLoop.current.add(timer, forMode: .commonModes)

 

本專案中關於Timer的部分原始碼:

    var result: UILabel!
    var timer:Timer!
    var lableNumber:Double = 0

    @objc func startHandler(){
        if self.timer != nil {
            self.stopHandler()
        }
        //每隔0.1秒重新整理lableNumber的數值
        self.timer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { (Timer) in
            self.lableNumber = self.lableNumber + 0.1
            self.result.text = String(format: "%.1f", self.lableNumber)
        }
        //啟動定時器
        self.timer.fire()
    }
    
    @objc func stopHandler(){
        guard let timerForDistory = self.timer else {
            return
        }
        //消除定時器
        timerForDistory.invalidate()
    }

 

學習原始碼來自 https://github.com/nimomeng/30-swift-projects-in-30-days ,其Swift語言版本為 4.1 。

學習過程我會將程式碼語言版本改成Swift 5,程式碼地址:https://github.com/dong706/30-swift-projects-in-30-days/ 。

 

參考文章:swift Timer的