У меня есть представление коллекции в моем приложении, и оно обновит sh с анимацией при появлении нового контента или удалении. Однако я не хочу, чтобы он обновлял sh, пока пользователь выполняет прокрутку, потому что это может привести к рывкам. Я хочу обновить sh представление коллекции только тогда, когда пользователь завершил прокрутку / когда она не прокручивается.
Итак, у меня есть драйвер источника данных, и я попытался использовать filter
, чтобы заставить его ждать его становится правдой, но не повезло.
Это мой драйвер прокрутки, который я передаю ViewModel
let isScrollViewScrollingDriver = Observable.merge(
gridCollectionView.rx.willBeginDragging.map { _ in true },
gridCollectionView.rx.didEndDragging.map { _ in false }
).asDriver(onErrorJustReturn: false).startWith(false).distinctUntilChanged()
моему ViewModel init в контроллере представления
viewModel = ViewModel(
photoLibraryService: PhotoLibraryService.shared,
isGridViewScrolling: isScrollViewScrollingDriver,
disposeBag: disposeBag
)
My 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
? Благодаря.