gpt4 book ai didi

swift - 有没有办法将 preferredStatusBarStyle 与 RxCocoa 绑定(bind)?

转载 作者:行者123 更新时间:2023-11-28 11:53:53 25 4
gpt4 key购买 nike

我使用以下代码绑定(bind) statusBarStyle

public extension Reactive where Base: UIApplication {

public var statusBarStyle: Binder<UIStatusBarStyle> {
return Binder(self.base) { view, attr in
view.statusBarStyle = attr
}
}

}

然而,此属性在 iOS 9 中已弃用。新文档建议在 View Controller 中覆盖 preferredStatusBarStyle。如何绑定(bind)此属性?

最佳答案

您不能“绑定(bind)”到 preferredStatusBarStyle,因为它是一个生成的属性。正如您所说,您必须覆盖此属性并返回一个值。一种方法是创建一个 BehaviorRelay 属性,改为绑定(bind)到该属性,然后从重写的方法中返回中继的值。您还需要确保在状态栏样式更改时通知 View Controller :

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)
}

关于swift - 有没有办法将 preferredStatusBarStyle 与 RxCocoa 绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51451219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com