很抱歉,如果这是一个新手问题,我对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()
}
}
答案 0 :(得分:1)
没有理由每毫秒更新一次屏幕。如果你真的需要定时器来快速启动,你需要在这里进行一些优化。首先尝试更新labelTimer.text(并计算其中的字符串)每40或甚至100毫秒,用户体验没有区别。
P.S。:第四行有拼写错误:你需要数千,而不是数百。