Swift倒计时按钮

21 篇文章 0 订阅

在需要使用倒计时按钮的地方黏贴以下代码

 //倒计时验证码
    func countDown(_ timeOut: Int, btn: UIButton){
           //倒计时时间
           var timeout = timeOut
           let queue:DispatchQueue = DispatchQueue.global(qos: DispatchQoS.QoSClass.default)
           let _timer:DispatchSource = DispatchSource.makeTimerSource(flags: [], queue: queue) as! DispatchSource
           _timer.scheduleRepeating(wallDeadline: DispatchWallTime.now(), interval: .seconds(1))
           //每秒执行
           _timer.setEventHandler(handler: { () -> Void in
               if(timeout<=0){ //倒计时结束,关闭
                   _timer.cancel();
                   DispatchQueue.main.sync(execute: { () -> Void in
                       btn.setTitle("重新获取", for: .normal)
                       btn.isEnabled = true
                       btn.layer.backgroundColor = UIColor.orange.cgColor
                   })
               }else{//正在倒计时
                   let seconds = timeout
                   DispatchQueue.main.sync(execute: { () -> Void in
                       let str = String(describing: seconds)
                       btn.setTitle("\(str)秒后获取", for: .normal)
                       btn.isEnabled = false
                       btn.layer.backgroundColor = UIColor.gray.cgColor
                   })
                   timeout -= 1;
               }
           })
           _timer.resume()
       }

使用的地方使用以下代码:

  // 启动倒计时
   countDown(10, btn: self.sendSMSButton)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值