iOS开发者进阶

RxSwift UIButton的倒计时

2020-03-05  本文已影响0人  __Mr_Xie__

前言

废话不多说了,可以直接拿过来用,封装你们自己看着办吧。

Code

import UIKit
import RxSwift
import RxCocoa

let countDownSeconds: Int = 60

class ViewController: UIViewController {
    
    @IBOutlet weak var secondBtn: UIButton!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
         let timer = Observable<Int>.timer(0, period: 1, scheduler: MainScheduler.instance)
                  .map{countDownSeconds - $0}
                  .filter{ $0 >= 0 }
                  .asDriver(onErrorJustReturn: 0)

        let second = secondBtn.rx.tap
            .flatMapLatest { _ -> Driver<Int> in
                return timer
        }
        
        let sendCodeButtonText = second.map { [weak self] (e) -> String in
            self?.secondBtn.isEnabled = (e == 0 ? true : false)
            return (e == 0 ? "发送验证码":"\(e)s")
        }
        
        sendCodeButtonText.bind(to: secondBtn.rx.title(for: .normal)).disposed(by: disposeBag)
    }
}

注意⚠️

Author

如果你有什么建议,可以关注我的公众号:iOS开发者进阶,直接留言,留言必回。

上一篇下一篇

猜你喜欢

热点阅读