ios - 定时器未同步

标签 ios swift timer

抱歉,如果这是一个新手问题,我是 iOS 和 Swift 的新手。 我有一个计时器,我知道我可以使用“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()
    }
}

最佳答案

没有理由每毫秒更新一次屏幕。如果你真的需要定时器这么快,你需要在这里进行一些优化。首先尝试每 40 或什至 100 毫秒更新 labelTimer.text(并为此计算字符串),用户体验没有差异。

P.S.:第四行有错别字:你需要千,而不是百。

关于ios - 定时器未同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45394289/

相关文章:

ios - 全屏 iOS 分享扩展

ios - 显示上面有 3D 对象的平铺 map

string - 在 Swift 中转换字符和代码点

swift - 无法创建 UIImage 并将其附加到数组

ios - Swift 3 - 如何让计时器在后台工作

javascript - 计时器倒计时 Angular 2

ios - 重新加载 UITableView 以包含新插入的数据

ios - xcodebuild 错误 - SecKey API 返回 : -25308

swift - 由于自定义 CNSocialProfile 服务名称,imessage 中的 VCF 崩溃?

python - 在 Python 3.3 中制作计时器