繁体   English   中英

有什么办法可以将PreferredStatusBarStyle与RxCocoa绑定?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM