import UIKit
import RxSwift
import RxCocoa
let countDownSeconds: Int = 60
class ViewController: UIViewController {
let bag = DisposeBag()
@IBOutlet weak var button: UIButton!
var disposable: Disposable? = nil
override func viewDidLoad() {
super.viewDidLoad()
button.setTitle("获取验证码", for: .normal)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func buttonAction(_ sender: UIButton) {
self.disposable?.dispose()
self.disposable =
Observable<Int>.timer(0, period: 1, scheduler: MainScheduler.instance).map { $0 + 1 }
.map { countDownSeconds - $0 }
.do(onNext: { [weak self] (element) in
guard let `self` = self else { return }
if element == 0 {
self.disposable?.dispose()
self.button.isEnabled = true
self.button.titleLabel?.text = "重新获取"
self.button.setTitle("重新获取", for: .normal)
} else {
self.button.isEnabled = false
}
})
.subscribe(onNext: { [weak self] (element) in
guard let `self` = self else { return }
self.button.titleLabel?.text = "\(element)秒后"
self.button.setTitle("\(element)秒后", for: .normal)
})
}
}