[英]Is there a way yo bind preferredStatusBarStyle with RxCocoa?
我正在使用以下代码绑定statusBarStyle
。
public extension Reactive where Base: UIApplication {
public var statusBarStyle: Binder<UIStatusBarStyle> {
return Binder(self.base) { view, attr in
view.statusBarStyle = attr
}
}
}
但是,此属性在iOS 9中已弃用。新文档建议在视图控制器中重写preferredStatusBarStyle
。 如何绑定此属性?
您不能“绑定”到preferredStatusBarStyle
因为它是生成的属性。 如前所述,您将不得不覆盖此属性并返回一个值。 一种方法是创建BehaviorRelay
属性,绑定到该属性,然后从重写的方法返回中继的值。 您还需要确保在状态栏样式更改时告诉视图控制器:
let statusBarStyleRelay = BehaviorRelay<UIStatusBarStyle>(value: .default)
override var preferredStatusBarStyle: UIStatusBarStyle {
return statusBarStyleRelay.value
}
func setupBindings(for statusBarObservable: Observable<UIStatusBarStyle>) {
statusBarObservable
.bind(to: statusBarStyleRelay)
.disposed(by: disposeBag)
statusBarStyleRelay
.distinctUntilChanged()
.do(onNext: { [weak self] _ in
self?.setNeedsStatusBarAppearanceUpdate()
})
.subscribe()
.disposed(by: disposeBag)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.