我遇到了Swift计时器问题。计时器在iPhone 6等旧版iPhone上无法正常使用。当我打印出时间时,计时器每2秒将1秒计数一次。但是,如果我将TimeInterval更改为0.05,则效果会更好一些。但是仍然不能像现实生活中那样工作。这是我的代码。谁能帮我 ?
weak var timer: Timer?
var startTime: Double = 0
func configureTimer(totalSecond: Double) {
self.startTime = 0
self.invalidateTimer()
DispatchQueue.main.async {
self.timer = Timer.scheduledTimer(timeInterval: 0.01,target: self,selector: #selector(self.advanceTimer(timer:)),userInfo: nil,repeats: true)
}
}
@objc func advanceTimer(timer: Timer) {
time = Date().timeIntervalSinceReferenceDate - startTime
startTime += 0.01
print("Timer \(startTime)")
self.questionView.configureProgressBar(totalTime: Double(self.totalSecond), elapsingTime: startTime)
self.isTimeExpired = false
if Int(startTime) == Int(totalSecond) {
self.timer!.invalidate()
self.isTimeExpired = true
self.userAnswerIndex = -1
self.sendAnswer(index: self.userAnswerIndex, isTimeExpired: self.isTimeExpired)
}
}
我会尝试像这样设置。
计时器不是很精确。我认为精度约为0.05秒。而且,如果一个过程需要大量电能,那么您的计时器就会更加慢下来。解决方案可以是节省启动计时器的时间,并且每次启动计时器时,您都可以进行数学运算来知道经过了多少时间:
}