我如何建立一个重复的倒数计时器? [关闭]

问题描述 投票:-2回答:1
im试图构建具有2个倒数计时器。一暂停倒计时(15秒)和一设置倒计时(45秒)。当设置倒数计时到零时,我希望它重置为15秒(暂停倒计时)并自动将其倒计时。当“暂停持续时间”达到零时,我希望将其重置为45秒(设置倒计时)。我要么让它完全停止运行,要么工作一圈,然后再计算-1,-2,-3,-4

这是我到目前为止尝试过的

@ IBOutlet弱var goOrPauseLabel:UILabel!

@IBOutlet weak var countDownLabel: UILabel! @IBAction func startButton(_ sender: Any) { timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(countDownMethod), userInfo: nil, repeats: true) } @objc func countDownMethod() { countDownLabel.text = "\(setCountdown)" setCountdown -= 1 if setCountdown <= 0 { countDownLabel.text = "\(pauseCountdown)" pauseCountdown -= 1 } else if pauseCountdown <= 0 { countDownLabel.text = "\(setCountdown)" setCountdown -= 1 } }

希望您能理解我的问题我感谢您的回答
swift timer repeat countdown
1个回答
-1
投票
我已经做了类似的工作。尝试将此代码粘贴到操场上,然后四处游玩以获得所需的结果。

import UIKit import PlaygroundSupport class CountdownTimer { var timer: Timer? init(_ time: Int, completion: @escaping (Int) -> Void) { var timePeriod = time timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { _ in timePeriod -= 1 completion(timePeriod) if timePeriod == 0 { self.timer?.invalidate() } } } } class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let label = UILabel() label.text = "5" label.textColor = .white label.translatesAutoresizingMaskIntoConstraints = false view.addSubview(label) NSLayoutConstraint.activate([ label.centerXAnchor.constraint(equalTo: view.centerXAnchor), label.centerYAnchor.constraint(equalTo: view.centerYAnchor)]) CountdownTimer(5) { time in label.text = "\(time)" } } } PlaygroundPage.current.liveView = ViewController() PlaygroundPage.current.needsIndefiniteExecution = true

© www.soinside.com 2019 - 2024. All rights reserved.