如何快速创建带有分钟和秒的倒数计时器?



我找不到一个教程可以做分钟和秒的倒数计时器。有一两个,但它们有点糟糕。

import UIKit
class HomeViewController: UIViewController {
@IBOutlet weak var focusSession: UILabel!
@IBOutlet weak var breakSession: UILabel!
var prodSeconds = String() // This value is set in a different view controller
lazy var intProdSeconds = Int(prodSeconds)
var timer = Timer()
var isTimerRunning = false  // Make sure only one timer is running at a time
override func viewDidLoad() {
super.viewDidLoad()
if isTimerRunning == false {
runProdTimer()
}
//focusSession.text = String(prodMinutes) + ":" + String(prodSeconds) // Ignore this for now stack overflow ppl
}
func runProdTimer() {
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: (#selector(HomeViewController.updateProdTimer)), userInfo: nil, repeats: true)
isTimerRunning = true
}
@objc func updateProdTimer() {
if intProdSeconds! < 1 {
timer.invalidate()
focusSession.text = "00:00"
}
else {
intProdSeconds! -= 1
focusSession.text = prodTimeString(time: TimeInterval(prodSeconds)!)
}
}
func prodTimeString(time: TimeInterval) -> String {
let prodMinutes = Int(time) / 60 % 60
let prodSeconds = Int(time) % 60
return String(format: "%02d:%02d", prodMinutes, prodSeconds)
}
}

用户输入他们的时间量,并将其存储在prodSeconds变量中,然后使用lazy变量将其转换为其下方的Int

但是,当我运行应用程序时,计时器仍然没有倒计时。 据说这只是我从不同教程中遵循的秒计时器。但发生的情况是,显示计时器的标签仅以00:prodSeconds格式显示用户输入的数字,实际上并没有倒计时。

附言:现在不用担心实现开始/停止按钮。就我而言,计时器应该在视图加载时启动。

问题是你从

intProdSeconds! -= 1

prodSeconds传递给这个

focusSession.text = prodTimeString(time: TimeInterval(prodSeconds)!)

因此,请确保只处理intProdSeconds

最新更新