Skip to content

Instantly share code, notes, and snippets.

@yosuke1985
Created February 17, 2021 08:10
Show Gist options
  • Save yosuke1985/3a5448b257a2053328c0f6bc0f106881 to your computer and use it in GitHub Desktop.
Save yosuke1985/3a5448b257a2053328c0f6bc0f106881 to your computer and use it in GitHub Desktop.
ActivityIndicatorExample.swift
import RxCocoa
import RxSwift
import UIKit
protocol OverlayableViewController: UIViewController {
var overlayView: UIView! { get set }
var disposeBag: DisposeBag { get }
}
extension OverlayableViewController {
private var overlay: Binder<Bool> {
Binder(overlayView) { v, isLoading in
v.isHidden = !isLoading
}
}
func bindOverlay(to observable: Observable<Bool>) {
observable
.asDriver(onErrorJustReturn: false)
.drive(overlay)
.disposed(by: disposeBag)
}
}
class SampleViewController: UIViewController {
let viewModel = FamilyFontListViewModel()
let disposeBag = DisposeBag()
@IBOutlet weak var overlayView: UIView! {
didSet { bindOverlay(to: viewModel.isLoading) }
}
}
extension FamilyFontListViewController: OverlayableViewController {}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment