Sorry, wenn dies eine neue Frage ist, bin ich sehr neu in iOS & Swift. Ich habe einen Timer, ich weiß, ich könnte "CADisplayLink" verwenden, aber wenn ich es verwende, werden meine Millisekunden in meinem Timer wie 1, 3, 7 ... 67, 71 springen ... Ich brauche das nicht, Ich brauche 1, 2, 3, 4, 5 ... 54, 55, 56, 57 ... In iPhone 7, iPhone 7 Plus, iPhone 5 Funktion ziemlich gut, aber in iPhone SE, iPad Retina, iPad Pro, iPad Air der Timer ist zu viel langsam, so im Grunde ist der Timer verzerrt.Timer nicht synchronisiert
Der Timer ist nicht so gut wie die in der Standard-Timer-App (FPS Problem?)
Ich brauche Millisekunden jeden Schritt machen läuft:
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()
}
}
Zwei Kommentare. 1) Das Display wird nicht so schnell aktualisiert, also machen Sie sich keine Sorgen darüber, dass viele Ziffern angezeigt werden, wenn der Timer läuft. 2) Timer ist nicht so genau. Es ist nicht garantiert, dass das Intervall, nach dem Sie fragen, aufgerufen wird, insbesondere bei einem Wert von nur 0,001. Sie sollten stattdessen eine Uhr lesen, wenn Sie den Timer starten und dann bei jedem * Tick * und berechnen Sie die Differenz zu diesem Zeitpunkt und aktualisieren Sie die Anzeige. – vacawama
Gute Info hier: https://Stackoverflow.com/q/31375361/1630618 – vacawama