例子一:

事件绑定,间接触发

置顶显示,滚动隐没

点击显示,再点隐没

var panelHidden = BehaviorSubject<Bool>(value: false)bottomBoard.rhsMenuB.rx.tap.subscribe { () in            self.panelHidden.onNext(self.bottomBoard.rhsMenuB.isSelected)        }.disposed(by: rx.disposeBag)                panelHidden.asObservable().bind(to: panelG.rx.isHidden).disposed(by: rx.disposeBag)        panelHidden.map { (haha) -> Bool in            haha == false        }.asObservable().bind(to: bottomBoard.rhsMenuB.rx.isSelected).disposed(by: rx.disposeBag)

间接触发

extension PlayerController: UIScrollViewDelegate{        func scrollViewDidScroll(_ scrollView: UIScrollView) {                if case EnterP_src.custom = p_input{            panelHidden.onNext(tShowD.contentOffset.y > 3)        }        else{            panelHidden.onNext(contentHan.contentOffset.y > 3)        }    }}


例子2:

事件绑定,间接触发

点击呈现,再点收起

var topChoosePopHidden = BehaviorSubject<Bool>(value: true)rhsMostMenuBtn.rx.tap.subscribe { () in            self.topChoosePopHidden.onNext(self.rhsMostMenuBtn.isSelected)        }.disposed(by: rx.disposeBag)                topChoosePopHidden.asObservable().subscribe(onNext: { (toHid) in            if toHid == false, self.playingSelected{                self.playingSelected.toggle()                self.toPause()            }            UIView.animate(withDuration: 0.3) {                if toHid{                    self.constraintA.bottomChoosePop?.constraint.update(offset: 0)                }                else{                    self.constraintA.bottomChoosePop?.constraint.update(offset: self.progressChoosePop.popH)                }                self.view.layoutIfNeeded()            }        }).disposed(by: rx.disposeBag)                topChoosePopHidden.asObservable().map { (ququ) -> Bool in            ququ == false        }.asObservable().bind(to: rhsMostMenuBtn.rx.isSelected).disposed(by: rx.disposeBag)

间接触发

func to(page direction: Orientation){        topChoosePopHidden.onNext(true)}