簡體   English   中英

狀態欄高度 SwiftUI iOS 13

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM