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

相關文章
相關標籤/搜索