반응형
RxSwift를 이용해서 조금 더 리엑티브하게 페이징 처리를 해보았습니다.
extension Reactive where Base: UIScrollView {
var reachedBottom: Observable<Void> {
return contentOffset
.flatMap { [weak base] contentOffset -> Observable<Void> in
guard let scrollView = base else { return Observable.empty() }
let visibleHeight = scrollView.frame.height - scrollView.contentInset.top - scrollView.contentInset.bottom
let y = contentOffset.y + scrollView.contentInset.top
let threshold = max(0.0, scrollView.contentSize.height - visibleHeight)
return y > threshold ? Observable.just(()) : Observable.empty()
}
}
}
let loadNextPageTrigger: tableView.rx.reachedBottom.asObservable()
반응형
'iOS > RxSwift' 카테고리의 다른 글
[RxSwift] Merge와 concat (0) | 2024.09.19 |
---|---|
[RxSwift] 재사용으로 인해, 테이블뷰 셀안에 버튼이 반응하지 않을때 (0) | 2024.07.10 |
[RxSwift] Map, FlatMap (Combining Operators ) (0) | 2024.06.17 |
[RxSwift] Rx를 이용한 백그라운드 감지 (0) | 2024.06.14 |
[RxSwift] ActivityIndicatorView를 Rx로 쉽게 컨트롤하기 (0) | 2024.06.08 |