基于RxSwift对UIButton的一些扩展

既然是基于RxSwift,首先需要导入第三方库RxSwift,RxCocoa

extension Reactive where Base: UIButton {
    
    /* 
        button isEnable与否的两种情况下对应的 backgroudColor
     */
    
    public var isEnabledBgColor: UIBindingObserver<Base, Bool> {
        return UIBindingObserver(UIElement: self.base) { control, value in
            
            control.backgroundColor = value ? UIColor.blue : UIColor.white
        }
    }
    
    
    /*
     button isEnable与否的两种情况下对应的 borderColor
     */
    
    public var isEnabledBorderColor: UIBindingObserver<Base, Bool> {
        return UIBindingObserver(UIElement: self.base) { control, value in
            
            control.layer.borderColor = value ? UIColor.blue.cgColor : UIColor.white.cgColor
            control.layer.masksToBounds = true
            
        }
    }
}

以下举例如何调用

class RegisterViewController: UIViewController {
    @IBOutlet weak var phoneTextField: UITextField!
    @IBOutlet weak var authTextField: UITextField!
    @IBOutlet weak var passwordTextField: UITextField!
    @IBOutlet weak var showBt: UIButton!
    @IBOutlet weak var nextBt: UIButton!
    @IBOutlet weak var authBt: UIButton!
    
    var isCountDown = false
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let phoneValid = phoneTextField.rx.text.orEmpty
            .map{$0.count >= 11}
            .shareReplay(1)
        
        let borderValid = phoneTextField.rx.text.orEmpty
            .map{$0.count >= 11 && !(self.isCountDown)}
            .shareReplay(1)
        
        borderValid
            .bind(to: authBt.rx.isEnabled)
            .disposed(by: disposeBag)
        
        borderValid
            .bind(to: authBt.rx.isEnabledBorderColor)
            .disposed(by: disposeBag)
        
        phoneValid
            .bind(to: authBt.rx.isEnabledBgColor)
            .disposed(by: disposeBag)
        
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,692评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,225评论 4 61
  • 1.如何做人的能力 我一直都觉得如何做人比学习和工作更加重要。我曾经问过一个大公司做过HR的美国人,如果两个人应聘...
    莉莉俺的路西阅读 1,462评论 2 0
  • 旅游预测项目报告 团队分工 项目报告 表1 出国旅游及参团意向调查结果 表2 潜在客户信息 目标 运用Scrum敏...
    蜡笔小新JiuJiuJiu阅读 1,157评论 0 0
  • 闲来无事,采撷一文艺片《百鸟朝凤》,看完,内心复杂,犹如打翻的五味瓶,不知啥滋味。想起近日看的几部影片,个人觉得此...
    十三爷Samson阅读 3,770评论 1 5