05.RxSwif 经常使用控件的使用

1.btn.rx.tap
// 接下来咱们处理性别选择
        // 如今咱们想象性别选择按钮的背后的逻辑
        // 1 : 性别的选择 和 上面生日的选择 决定下面更新按钮 : 咱们常见的必选项
        // 2 : 性别的选择 是由咱们的两个按钮的处理,咱们不必分开逻辑
        
        let genderSelectOB = Variable<LGGender>(.notSelcted)
        maleBtn.rx.tap
            .map{ LGGender.male } // 男生的序列
            .bind(to: genderSelectOB) // 绑定到咱们定义的序列
            .disposed(by: disposeBag)
        
        femaleBtn.rx.tap
            .map{ LGGender.female } // 男生的序列
            .bind(to: genderSelectOB) // 绑定到咱们定义的序列
            .disposed(by: disposeBag)
复制代码
2.picker.rx.date
// 首先咱们的出生日期不能早于今天,不然边框变色
        let birthdayOB = birthdayPicker.rx.date
            .map { LGDataPickerValidator.isValidDate(date: $0) }
        
        // 背景色
        birthdayOB.map { $0 ? UIColor.orange : UIColor.clear}
            .subscribe(onNext: { (color) in
                self.birthdayPicker.layer.borderColor = color.cgColor
            })
            .disposed(by: disposeBag)

        // 按钮点击 - 常规思惟就是给一个变量记录
        // Rx思惟 应该是绑定到相应的序列里面去
        // 这样的序列就是咱们的 genderSelectionOb : male female male ...枚举的值
    
        let genderSELOB = genderSelectOB.asObservable().map { $0 != .notSelcted ? true : false }
        // 控制咱们的点击更新按钮 - 被两个序列共同影响
        Observable.combineLatest(birthdayOB,genderSELOB) { $0 && $1}
            .bind(to: updateBtn.rx.isEnabled)
            .disposed(by: disposeBag)
复制代码
3.switch.rx.value
/**
         对于UISwitch来讲:
         
         当UISwitch为OFF时,表示用户不了解Swift,所以,下面的UISlider应该为0;
         当UISwitch为ON时,能够默认把UISlider设置在1/4的位置,表示大体了解;
         
         对于UISlider来讲:
         
         当UISlider不为0时,应该自动把UISwitch设置为ON;
         当UISlider为0时,应该自动把UISwitch设置为OFF;
         */
        // on off  -> 0.25  0
        knowSwiftSwitch.rx.value.map { $0 ? 0.25 : 0}
            .bind(to: swiftLevelSlider.rx.value)
            .disposed(by: disposeBag)
复制代码
4.silder.rx.value
// 0  1 true false
        swiftLevelSlider.rx.value.map { $0 != 0 ? true : false}
            .bind(to: knowSwiftSwitch.rx.isOn)
            .disposed(by: disposeBag)
复制代码
5.stepper.rx.value
passionToLearnStepper.rx.value.skip(1).subscribe(onNext: { (value) in
            self.heartHeightConstraint.constant = CGFloat(value - 10)
        }).disposed(by: disposeBag)
复制代码

效果图:swift

相关文章
相关标签/搜索