swift

Swift iOS 获取短信验证码倒计时效果(防闪烁)

2020-07-22  本文已影响0人  _小爽_

在你的页面中定义下面的变量和方法:

    var timer:Timer?
    var  seconds:Int=0{
        willSet{
            //在setTitle前添加这句防止倒计时闪烁
            self.tvSend.titleLabel?.text="\(newValue)秒后重新获取"
            self.tvSend.setTitle("\(newValue)秒后重新获取", for: .normal)
            self.tvSend.isEnabled=false
            if newValue <= 0{
                //这里也要添加
                self.tvSend.titleLabel?.text="重新获取"
                self.tvSend.setTitle("重新获取", for: .normal)
                self.tvSend.isEnabled=true
                //停止计数
                timer?.invalidate()
                timer = nil
            }
        }
    }

    var isCounting = false{
        willSet{
            if newValue {
                //这里添加个判断,不加的话再次倒计时的时候会越来越快
                if timer == nil{
                    timer=Timer.scheduledTimer(timeInterval:1, target:self, selector:#selector(updateTime), userInfo:nil, repeats:true)
                }
                //倒计时60秒
                seconds=60
            }
        }
    }

    @objc func updateTime(_timer:Timer){
        seconds -= 1
    }

使用时设置isCounting = true就行了

上一篇 下一篇

猜你喜欢

热点阅读