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就行了