iOS/RxSwift

[RxSwift] ActivityIndicatorView를 Rx로 쉽게 컨트롤하기

최지철 2024. 6. 8. 11:19
728x90
반응형

  • 인디케이터뷰의 상태를 변경하기 위해서는 코드를 추가해주어야 합니다.
  • 그래서! startAnimating()stopAnimating() 메소드 호출을 자동화함으로써, 반복적인 코드를 줄여줍니다.
  • isAnimating 바인더를 통해 UIActivityIndicatorView의 상태도 반응형으로 관리할 수 있게 되므로,  Rx를 좀 더 리엑티브하게 활용해보았습니다. ㅎ.ㅎ
import RxSwift
import RxCocoa

extension Reactive where Base: UIActivityIndicatorView {  
    
    public var isAnimating: Binder<Bool> { /// Rx로 ActivityIndicatorView의 Animate를 조금 더 간편하게 제어하기 위한 Extension입니다.
        return Binder(self.base) { activityIndicator, isActive in
            if isActive {
                activityIndicator.startAnimating()
            } else {
                activityIndicator.stopAnimating()
            }
        }
    }
}

 

Extension을 활용하여, Bool을 통해 애니메이션을 간단히 조절 할 수 있게 하였습니다.

아래는, 사용 예시입니다.

 

        output.indicatorVisible
            .drive(activityIndicator.rx.isAnimating)
            .disposed(by: disposeBag)

 

728x90
반응형