본문 바로가기
iOS/RxSwift

[RxSwift] Rx를 이용한 페이징처리

by 최지철 2024. 6. 25.
728x90
반응형

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()
728x90
반응형