首先在項(xiàng)目中進(jìn)入RxCocoa 和RxSwift
import RxCocoa
import RxSwift
聲明需要的屬性
let disposed = DisposeBag()
let timer = Observable<Int>.interval(1, scheduler: MainScheduler.instance)
let countDownStopped = Variable(true)
let leftTime = Variable(Int(30))
懶加載button和label,之后再加載view的時(shí)候先使lable隱藏逸爵,button展示
leftLabel.isHidden = true
barBtn.isHidden = false
view.addSubview(barBtn)
view.addSubview(leftLabel)
這里就是最重要的方法十电,在點(diǎn)擊button的時(shí)候調(diào)用這個(gè)方法就實(shí)現(xiàn)了
func startClicked() {
leftLabel.isHidden = false
barBtn.isHidden = true
self.countDownStopped.value = false
timer.takeUntil(countDownStopped.asObservable().filter{$0})
.subscribe(onNext: { [weak self](event) in
self!.leftTime.value -= 1
print("這里是剩余的時(shí)間:\(self?.leftTime.value ?? 0)")
self?.leftLabel.text = "這里是剩余的時(shí)間:\(self?.leftTime.value ?? 0)秒"
if (self!.leftTime.value == 0) {
print("倒計(jì)時(shí)結(jié)束")
self!.countDownStopped.value = true
self!.leftTime.value = 30
self!.leftLabel.isHidden = true
self!.barBtn.isHidden = false
self?.leftLabel.text = "這里是剩余的時(shí)間:\(self?.leftTime.value ?? 0)秒"
}
}, onError: { (error) in
}).disposed(by: disposed)
}