[英]Status bar height in SwiftUI in iOS 13
如何獲取當前場景的狀態欄高度以用於 SwiftUI 視圖?
看起來鑰匙正在訪問當前場景。 從視圖 controller 中,您可以使用view.window?.windowScene
到達場景,但是在 SwiftUI 視圖中呢?
創建視圖層次結構時,將 window 場景存儲在環境 object 中。 環境 object 可以是您用於其他應用范圍數據的現有 object。
final class AppData: ObservableObject {
let windowScene: UIWindow? // Will be nil in SwiftUI previewers
init(windowScene: UIWindowScene? = nil) {
self.windowScene = windowScene
}
}
在創建環境 object 時設置 window 場景。將 object 添加到視圖層次結構底部的視圖,例如根視圖。
let rootView = RootView().environmentObject(AppData(windowScene: windowScene))
最后使用window場景獲取狀態欄高度。
struct MyView: View {
@EnvironmentObject private var appData: AppData
...
var body: some View {
SomeView().frame(height: self.appData.windowScene?.statusBarManager?.statusBarFrame.height ?? 0)
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.