• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

swift-利用UIDatePicker实现定时器的效果

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

效果图如下:

 

可以通过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 = "时间到!"
    }
    
}

这样就完成了!


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
[Swift]通天遁地Swift发布时间:2022-07-13
下一篇:
苹果Swift可为Windows/Android开发软件了发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap