我正在研究一个iOS项目,该项目使用UIViewController
包含一个UICollectionView
和一个SearchViewController
。我的目标是使用RxSwift在用户向上滚动时显示SearchViewController
和NavigationBar
,在向下滚动时隐藏它们(向下滚动时全屏显示)。我怎样才能实现这个目标?
我已经设置了SearchViewController
fileprivate func setUpSearchViewController() {
searchController.dimsBackgroundDuringPresentation = false
searchController.obscuresBackgroundDuringPresentation = false
searchController.searchBar.searchBarStyle = .minimal
navigationItem.searchController = searchController
UIView.setAnimationsEnabled(true)
if #available(iOS 11, *) {
navigationItem.searchController = searchController
navigationItem.hidesSearchBarWhenScrolling = false
} else {
self.navigationItem.titleView = searchController.searchBar
searchController.searchBar.sizeToFit() // needed for iOS 8
}
}
,我认为我们应该修改此observable
以获得结果:
collectionView.rx.didScroll.subscribe {_ in
if (self.collectionView.panGestureRecognizer.translation(in: self.collectionView.superview).y > 0) {
// scroll up
} else {
//scroll down
}
}.disposed(by:disposeBag)