计时器未同步

时间:2017-07-29 21:36:07

标签: ios swift timer

很抱歉,如果这是一个新手问题,我对iOS&迅速。 我有一个计时器,我知道我可以使用' CADisplayLink',但是如果我使用它,我的计时器中的毫秒数会跳得像1,3,7 ...... 67,71 ......我不会# 39; t需要这个,我需要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 个答案:

答案 0 :(得分:1)

没有理由每毫秒更新一次屏幕。如果你真的需要定时器来快速启动,你需要在这里进行一些优化。首先尝试更新labelTimer.text(并计算其中的字符串)每40或甚至100毫秒,用户体验没有区别。

P.S。:第四行有拼写错误:你需要数千,而不是数百。