【问题标题】:add a countdown timer before a countdown timer (swift3)在倒数计时器之前添加倒数计时器(swift3)
【发布时间】:2017-05-22 02:32:18
【问题描述】:

在我的代码中,如果您按下 startButton 倒计时将从 60 - 0 开始。我想要做的就是从 3 - 0 倒计时,然后从 60 - 0 倒计时。想想它,标记,设置,然后启动倒计时计时器,从 60 秒到 0。

 import UIKit
class ViewController: UIViewController {

@IBOutlet weak var startButton: UIButton!
@IBOutlet weak var timerLabel: UILabel!

var seconds = 60
var timer = Timer()
var isTimerRunning = false
var resumeTapped = false

@IBAction func startButtonTapped(_ sender: UIButton) {
    if isTimerRunning == false {
        runTimer()
        self.startButton.isEnabled = false
    }
}

func runTimer() {
    timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: (#selector(ViewController.updateTimer)), userInfo: nil, repeats: true)
    isTimerRunning = true

}
@IBAction func resetButtonTapped(_ sender: UIButton) {
    timer.invalidate()
    seconds = 60
    timerLabel.text = timeString(time: TimeInterval(seconds))
    isTimerRunning = false

}

//MARK: - Public Method
func updateTimer(){
    if seconds < 1 {
        timer.invalidate()
        //Send alert to indicate time's up.
    } else {
        seconds -= 1
        timerLabel.text = timeString(time: TimeInterval(seconds))
    }
}

func timeString(time:TimeInterval) -> String {
    let hours = Int(time) / 3600
    let minutes = Int(time) / 60 % 60
    let seconds = Int(time) % 60
    return String(format:"%02i:%02i:%02i", hours, minutes, seconds)
    }}

【问题讨论】:

  • 这里面临什么问题?
  • 我正在尝试链接 2 个倒数计时器 3-0 和 60-0。

标签: ios if-statement timer swift3 countdown


【解决方案1】:

嗯,在我们开始尝试链接计时器之前,也许我们可以只使用一个并将其 显示 就好像它是两个一样,一个接一个...

现在你的第一个计时器从 3 开始,第二个从 60 开始,3 小于 60...

也许我们可以在 64 处启动计时器,但 显示 时间为余数(时间,61),这些余数将变为 3、2、1、0、60、59、...

Swift 中的余数是%

比如:

  • 从 64 开始时间
  • timeString的参数名称改为actualTime,并
  • let time = actualTime % 61 添加为第一行。

顺便说一句:常量60 在您的代码中出现两次,考虑使用let 常量并使用它来重置变量。为倒计时等引入一个类似的常量。

HTH

【讨论】: