使用UIDatePicker实现倒计时功能

使用UIDatePicker实现倒计时功能_第1张图片
屏幕快照 2017-03-04 下午5.16.22.png
import UIKit

class ViewController: UIViewController {

    var datePicker:UIDatePicker!
    var leftTime:Int = 60
    var timer : Timer!
    var alert :UIAlertController!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        datePicker = UIDatePicker(frame: CGRect(x: 0, y: 100, width: 300, height: 200))
        datePicker.datePickerMode = .countDownTimer
        datePicker.countDownDuration = TimeInterval(self.leftTime)
        datePicker.addTarget(self, action: #selector(datePickerClick(_:)), for: .valueChanged)
        
        self.view.addSubview(datePicker)
        
        let btn = UIButton(type: .roundedRect)
        btn.frame = CGRect(x: 100, y: 400, width: 50, height: 50)
        btn.setTitle("开始", for: .normal)
        btn.setTitleColor(UIColor.blue, for: .normal)
        btn.setTitle("倒计时", for: .disabled)
        btn.setTitleColor(UIColor.red, for: .disabled)
        btn.addTarget(self, action: #selector(btnClick(_:)), for: .touchUpInside)
        self.view.addSubview(btn)
        
    }

    func btnClick(_ btn:UIButton)
    {
        //不响应点击
        btn.isEnabled = false
        // 获取该倒计时器的剩余时间
        leftTime = Int(datePicker.countDownDuration);
        // 禁用UIDatePicker控件和按钮
        datePicker.isEnabled = false
        
        alert = UIAlertController(title: "倒计时", message: "\(leftTime)", preferredStyle: .alert)
        
        self.present(alert, animated: true, completion: {
            //print("\(self.leftTime)")
        })
        // 启用计时器,控制每秒执行一次tickDown方法
        timer = Timer.scheduledTimer(timeInterval:1, target: self, selector: #selector(timeStart), userInfo: nil, repeats: true)
        
        
        
        
    }
    func timeStart()
    {
        alert.message = "\(leftTime)"
        // 将剩余时间减少1秒
        leftTime = leftTime-1
        // 修改UIDatePicker的剩余时间
        datePicker.countDownDuration = TimeInterval(leftTime)
        print(leftTime)
        if leftTime<=0 {
            alert.message = "时间到"
            datePicker.isEnabled = true
            // 取消定时器
            timer.invalidate();
        }
        
        
    }
    func datePickerClick(_ dateP:UIDatePicker)
    {
        print("\(dateP.date)")
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

你可能感兴趣的:(使用UIDatePicker实现倒计时功能)