美文网首页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