在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
效果图如下:
可以通过UIDatePicker调整倒计时的时间,然后点击UIButton开始倒计时,使用NSTimer进行倒计时的时间展示,我是声明了一个label也进行了标记, 然后点击按钮开始倒计时的同时,弹出一个alertview,alertview上展示倒计时的一次递减的效果!结束后,改变下label、button、alertview的title的 显示字样! 具体代码如下: 1、声明所需各类控件 var datePicker = UIDatePicker() var myBtn = UIButton() var alertCon = UIAlertController() var hTimers = Timer() var labels = UILabel() var leftTimes:Int = 60 2、创建datepicker,并绑定响应方法,可以进行倒计时时间的改变,默认初始是60s func creatPicker(){ datePicker.frame = CGRect(x:10,y:64,width:kScreenWidth-20,height:260) datePicker.backgroundColor = UIColor.yellow datePicker.locale = Locale(identifier:"zh_CN") datePicker.addTarget(self, action: #selector(valueChanged), for: .valueChanged) datePicker.datePickerMode = .countDownTimer datePicker.setValue(UIColor.red, forKey: "textColor") self.view.addSubview(datePicker) } 响应方法的实现: //时间选择器的响应方法 func valueChanged() { print("选择倒计时间为-->:\(datePicker.countDownDuration)") } 3、创建button,并绑定响应方法 func creatDatePicker(){ myBtn.frame = CGRect(x:10,y:300,width:kScreenWidth-20,height:50) myBtn.setTitle("按钮", for: .normal) myBtn.setTitle("倒计时中", for: .disabled) myBtn.backgroundColor = UIColor.orange myBtn.setTitleColor(UIColor.white, for: .normal) myBtn.setTitleColor(UIColor.blue, for: .disabled) myBtn.addTarget(self, action: #selector(btnClick), for: .touchUpInside) self.view.addSubview(myBtn) } 响应方法的实现,在按钮的响应方法里面绑定NSTimer的响应方法,在点击按钮的时候触发 unc btnClick(){ myBtn.isEnabled = false // 获取该倒计时的剩余时间 leftTimes = Int(datePicker.countDownDuration) datePicker.isEnabled = false // 创建alertcontroller alertCon = UIAlertController(title:"倒计时开始",message:"倒计时开始,还有\(leftTimes)",preferredStyle:.alert) let cancel = UIAlertAction(title:"取消",style:.cancel,handler:nil) let okAction = UIAlertAction(title:"确定",style:.default,handler:nil) alertCon.addAction(cancel) alertCon.addAction(okAction) self.present(alertCon, animated: true, completion: nil) // 启动定时器 hTimers = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(clickDown), userInfo: nil, repeats: true) } 4、实现倒计时的响应方法 func clickDown(){ labels.text = "倒计时开始,还有\(leftTimes)s" alertCon.message = "倒计时开始,还有\(leftTimes)s" // 剩余时间少一秒 leftTimes -= 1 datePicker.countDownDuration = TimeInterval(leftTimes) if leftTimes <= 0 { // 取消定时器 hTimers.invalidate() // 改变UIDatePicker和UiButton,还有UILabel的状态 datePicker.isEnabled = true myBtn.isEnabled = true labels.text = "倒计时结束" alertCon.message = "时间到!" } } 这样就完成了! |
请发表评论