UIDatePicker为倒数计时器1分钟不是60秒

时间:2017-06-30 08:57:39

标签: ios swift uikit

我正在创建倒数计时器并在倒数计时器模式下使用UIDatePicker。当使用countDownDuration作为TimeInterval时,1分钟并不意味着60秒。我已经看到它是85,108,62,75秒。

这是一个来自Storyboard的漂亮的UIDatePicker,发生了什么?

以下是我的代码。

import UIKit

class SleepTimerViewController: UIViewController {

    @IBOutlet weak var timePicker: UIDatePicker!
    @IBOutlet weak var timerButton: UIButton!

    var radio = Radio.sharedInstance
    var timeRemaining = UILabel()
    var countdownView = UIView()
    var sleepTime = 0.0 {
        didSet {
            print(sleepTime)
        }
    }
    var timer: Timer?
    var timerIsRunning = false


    override func viewDidLoad() {
        super.viewDidLoad()
        setupView()

        // Do any additional setup after loading the view.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    private func startTimer() {
        print("startTimer")
        sleepTime = timePicker.countDownDuration
        timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(updateTimer), userInfo: nil, repeats: true)
        countdownView.isHidden = false
        timerIsRunning = true
        timerButton.titleLabel?.text = "Stop"
        timeRemaining.text = timeString(sleepTime)
    }

    @objc private func updateTimer() {
        print("updateTimer")
        if sleepTime != 0.0 {
            sleepTime -= 1
            timeRemaining.text = timeString(sleepTime)
        }
        else {
            timer?.invalidate()
            countdownView.isHidden = true
            timerIsRunning = false
//            timerButton.titleLabel?.text = "Start"
        }

    }

    private 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)
    }

    private func setupView(){
        countdownView.frame = timePicker.frame
        countdownView.center = timePicker.center
        countdownView.backgroundColor = UIColor.white
        countdownView.bounds = timePicker.frame
        timeRemaining.backgroundColor = UIColor.clear
        timeRemaining.textColor = UIColor.black
        timeRemaining.bounds = countdownView.bounds
        timeRemaining.center = countdownView.center
        timeRemaining.font = UIFont(name: "System", size: 60)
        timeRemaining.adjustsFontSizeToFitWidth = true
        timeRemaining.text = ""
        countdownView.addSubview(timeRemaining)
        timePicker.addSubview(countdownView)
        countdownView.isHidden = true

    }

    @IBAction func timerButton(_ sender: UIButton) {
        startTimer()
    }

    @IBAction func timePicker(_ sender: UIDatePicker) {
        print(timePicker.countDownDuration)
    }



}

1 个答案:

答案 0 :(得分:1)

确保将日期设置为自定义时间选择器。它看起来应该是这样的 enter image description here