【Swift3.0】iOS Swift 验证码按钮倒计时

定义变量

 
    public var timerVerify:Timer!
    public var verifyButton:UIButton!
    public let VERIFY_TIME_EXPIRY = 31
    public var timeCount:Int = 31

调用完成获取验证码接口后,启动计时器

    public func startVerifyTimer(){
//        self.verifyButton.titleLabel?.adjustsFontSizeToFitWidth = true
        refreshVerifyBtnDisplay()
        timerVerify = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(BaseViewController.refreshVerifyBtnDisplay), userInfo: nil, repeats: true)
    }
    

异步刷新页面按钮的文字

    public func refreshVerifyBtnDisplay(){
        UIView.performWithoutAnimation({
            timeCount = timeCount - 1
            if timeCount==0 {
                self.verifyButton.isEnabled = true
                self.verifyButton.backgroundColor = UIColor.colorWithHexString(hex: "#A80000")
                self.verifyButton.setTitle(String.init(format: "send.verify.code".localized()), for: .normal)
                self.timerVerify.invalidate()
                self.timerVerify = nil
                self.timeCount = VERIFY_TIME_EXPIRY
                self.verifyCode = ""
            }else{
                
                self.verifyButton.isEnabled = false
                self.verifyButton.backgroundColor = UIColor.colorWithHexString(hex: "#666666")
                self.verifyButton.setTitle(("send.verify.code".localized()+"("+String.init(timeCount)+")"), for: .normal)
                
            }
            self.verifyButton.layoutIfNeeded()
        })
        
    }

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 141,744评论 19赞 609
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 103,893评论 12赞 125
  • 刺猬运西瓜 在一个夏日炎炎的下午,果园的果子纷纷从树上跳了下来,铺满了一地。刺猬弟弟看...
    向着阳光00阅读 32评论 0赞 0
  • 你也许不知道自己到底想要什么 你只知道自己讨厌什么 也许你是一个感觉很快乐的人
    吹吹牛阅读 29评论 0赞 0