對不起,如果這是一個新手問題,我很新iOS的&斯威夫特。 我有一個計時器,我知道我可以使用'CADisplayLink',但是如果我使用它,我的計時器中的毫秒數將會跳變,如1,3,7 ... 67,71 ...我不需要這個,我需要1,2,3,4,5 ... 54,55,56,57 ... 在iPhone 7,iPhone 7 Plus,iPhone 5功能相當不錯,但在iPhone SE,iPad Retina,iPad Pro, iPad Air的定時器速度太慢,所以基本上定時器是傾斜的。定時器未同步
定時器不運行的一個默認計時器應用(FPS問題?)
我需要毫秒使每一步好:
func updateStopwatch() {
milliseconds += 1
print(milliseconds)
if milliseconds == 100 {
milliseconds = 0
seconds += 1
}
let millisecondsString = milliseconds > 9 ?"\(milliseconds)" : "0\(milliseconds)"
let secondsString = seconds > 9 ?"\(seconds)" : "\(seconds)"
stopWatchString = "\(secondsString).\(millisecondsString)"
labelTimer.text = stopWatchString
}
@IBAction func startStopButtonTapped(_ sender: Any) {
if isTimerRunning {
isTimerRunning = !isTimerRunning
timer = Timer.scheduledTimer(timeInterval: 0.001, target: self, selector: #selector(updateStopwatch), userInfo: nil, repeats: true)
}else{
isTimerRunning = !isTimerRunning
timer.invalidate()
}
}
兩條評論。 1)顯示屏無法更新,因此不要擔心在定時器運行時顯示那麼多數字。 2)計時器不準確。不能保證在你要求的時間間隔內被調用,特別是在小於'0.001'的值時。您應該在啓動計時器時讀取時鐘讀數,然後在每個*滴答*處計算差值並更新顯示。 – vacawama
這裏有很好的信息:https://stackoverflow.com/q/31375361/1630618 – vacawama