Sorry, wenn dies eine neue Frage ist, bin ich sehr neu in iOS & Swift. Ich habe ein Problem mit dem Timer-Intervall: Ich habe 0.01 Zeitintervall eingestellt, aber es entspricht nicht der Timer-Bezeichnung, weil 0.01 in einer Millisekunde entspricht, aber es zeigt es nicht an. Im Grunde ist der Timer verzerrt.Stoppuhr nicht synchronisiert
timer = Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: #selector(updateStopwatch) , userInfo: nil, repeats: true)
@IBAction func startStopButton(_ sender: Any) {
buttonTapped()
}
func updateStopwatch() {
milliseconds += 1
if milliseconds == 100 {
seconds += 1
milliseconds = 0
}
if seconds == 60 {
minutes += 1
seconds = 0
}
let millisecondsString = milliseconds > 9 ?"\(milliseconds)" : "0\(milliseconds)"
let secondsString = seconds > 9 ?"\(seconds)" : "0\(seconds)"
let minutesString = minutes > 9 ?"\(minutes)" : "0\(minutes)"
stopWatchString = "\(minutesString):\(secondsString).\(millisecondsString)"
labelTimer.text = stopWatchString
}
func buttonTapped() {
if isTimerRunning {
isTimerRunning = !isTimerRunning
timer = Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: #selector(updateStopwatch) , userInfo: nil, repeats: true)
startStopButton.setTitle("Stop", for: .normal)
}else{
isTimerRunning = !isTimerRunning
timer.invalidate()
startStopButton.setTitle("Start", for: .normal)
}
}
.01 es ist nicht 1 Millisekunde –
Sie sollten nie einen Timer verwenden, um Zeit zu berechnen. Speichern Sie einfach das Startdatum und erhalten Sie das Zeitintervall seit diesem Datum. –
Und 100 Millisekunden ist nicht 1 Sekunde. Es ist 0,1 Sekunden. Denken Sie daran, "Milli" ist 1/1000, nicht 1/100. – rmaddy