例子一:
事件绑定,间接触发
置顶显示,滚动隐没
点击显示,再点隐没
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)}