[iOS] NSTimer & CADisplayLink
NSTimer
timeInterval: 以秒為單位
commonModes: 為DefaultMode和TrackingRunLoopMode的集合, 可避免如tableview scroll時timer暫停的問題.
ex:
let timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(doTimerAction), userInfo: nil, repeats: true)
RunLoop.current.add(timer, forMode: .commonModes)
timer.fire() //開始
@objc func doTimerAction() {
}
CADisplayLink
可以看做比NSTimer更精密的Timer, 可配合螢幕的帧數做處理
(iOS固定一秒60帧)
ex:
var displayLinkTimer:CADisplayLink = CADisplayLink(target: self, selector: #selector(self.doTimerAction))
displayLinkTimer?.preferredFramesPerSecond = 10 //iOS固定一秒60帧, 一秒處理10次
displayLinkTimer?.add(to: RunLoop.current, forMode: .commonModes)
displayLinkTimer.isPaused = false //開啟
@objc func doTimerAction() {
}
Last updated