美文网首页iOS开发者进阶
RxSwift UIButton的倒计时

RxSwift UIButton的倒计时

作者: __Mr_Xie__ | 来源:发表于2020-03-05 16:08 被阅读0次

    前言

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

    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)
        }
    }
    

    注意⚠️

    • 倒计时的 UIButton 务必是 custom 类型,即:
      UIButton(type: .custom)
      否则会出现倒计时闪烁的问题。

    Author

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

    相关文章

      网友评论

        本文标题:RxSwift UIButton的倒计时

        本文链接:https://www.haomeiwen.com/subject/xvhrzctx.html