使用UIDatePicker實現(xiàn)倒計時功能

屏幕快照 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)
    {
        //不響應(yīng)點擊
        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)")
        })
        // 啟用計時器,控制每秒執(zhí)行一次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.
    }


}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容