我的应用程序中有一个集合视图,当有新内容或删除内容时,它将以动画刷新。但是,我不希望在用户滚动时刷新它,因为这会引起抽动。我只想在用户完成滚动时/不滚动时刷新集合视图。
所以我有一个数据源驱动程序,我试图使用filter
使其等待,直到它变为true,但没有运气。
这是我传递给ViewModel
的滚动驱动程序>
let isScrollViewScrollingDriver = Observable.merge( gridCollectionView.rx.willBeginDragging.map { _ in true }, gridCollectionView.rx.didEndDragging.map { _ in false } ).asDriver(onErrorJustReturn: false).startWith(false).distinctUntilChanged()
我在视图控制器中的ViewModel初始化
viewModel = ViewModel( photoLibraryService: PhotoLibraryService.shared, isGridViewScrolling: isScrollViewScrollingDriver, disposeBag: disposeBag )
我的ViewModel
let assetDriver = photoLibraryService.albumDriver.asObservable() .withLatestFrom( isGridViewScrolling.asObservable().filter { $0 == false } ) { (arg0, arg1) in return arg0 }.flatMapLatest { libraryAlbum -> Observable<[LibraryAsset]> in return photoLibraryService.convert(album: libraryAlbum) }.asDriver(onErrorJustReturn: []).startWith([]).distinctUntilChanged()
然后我将assetDriver映射到驱动我的集合视图的dataSourceDriver。
我可以对assetDriver进行哪些更改以使其等待isGridViewScrolling
变为false
?谢谢。
我的应用程序中有一个集合视图,当有新内容或删除内容时,它将以动画刷新。但是,我不希望用户滚动时刷新它,因为它会导致...
让我们看一些大理石图!