【发布时间】:2020-06-09 16:16:56
【问题描述】:
如何获取当前场景的状态栏高度以在 SwiftUI 视图中使用?
看起来钥匙正在访问当前场景。从视图控制器,you can useview.window?.windowScene 到达场景,但是在 SwiftUI 视图中呢?
【问题讨论】:
-
Get the window 并做同样的事情。
标签: swiftui uistatusbar uiscene
如何获取当前场景的状态栏高度以在 SwiftUI 视图中使用?
看起来钥匙正在访问当前场景。从视图控制器,you can useview.window?.windowScene 到达场景,但是在 SwiftUI 视图中呢?
【问题讨论】:
标签: swiftui uistatusbar uiscene
在创建视图层次结构时将窗口场景存储在环境对象中。环境对象可以是您用于其他应用范围数据的现有对象。
final class AppData: ObservableObject {
let windowScene: UIWindow? // Will be nil in SwiftUI previewers
init(windowScene: UIWindowScene? = nil) {
self.windowScene = windowScene
}
}
在创建环境对象时设置窗口场景。将对象添加到视图层次结构基础的视图中,例如根视图。
let rootView = RootView().environmentObject(AppData(windowScene: windowScene))
最后,使用窗口场景访问状态栏高度。
struct MyView: View {
@EnvironmentObject private var appData: AppData
...
var body: some View {
SomeView().frame(height: self.appData.windowScene?.statusBarManager?.statusBarFrame.height ?? 0)
}
}
【讨论】: