StatusBarStyling

License Version Swift Versions OS's Xcode 14.0+ SPM

StatusBarStyle 是一个 iOS 库,可以让你轻松地在 SwiftUI 视图中设置状态栏样式。

工作原理

这个库的灵感来自 SwiftUI-Introspect。它也通过将 StatusBarStylingView 添加到视图层级中,并交换 UIHostingControllerchildForStatusBarStylechildForStatusBarHidden 的 getter 方法,使其引用其中设置的状态栏样式。因此,在已经交换了这些 getter 方法的项目中,它可能无法按预期工作。

目录

要求

StatusBarStyling 代码库支持 iOS,需要 Xcode 14.0 或更高版本。此库的基本 SDK 版本为 14.0。

用法

首先,它基于方法交换 (swizzling) 实现,你必须在应用程序初始化时进行设置,例如:

import NavigationStatusBarStyling // or StatusBarStyling

final class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        NavigationStatusBarStyling.setup() // or StatusBarStyling.setup()
        return true
    }
}

并在 SwiftUI 视图中使用 statusBar(style:hidden:) 函数,例如:

import StatusBarStyling

struct ContentView: View {
    var body: some View {
        Text("ContentView")
            .statusBar(style: .lightContent, hidden: false)
    }
}

通常,视图层级结构中最内层的状态栏样式会被应用,例如:

import StatusBarStyling

struct ContentView: View {
    var body: some View {
        VStack {
            Text("1")
            
            VStack {
                Text("2")
                
                VStack {
                    Text("3")
                    
                    VStack {
                        Text("4")
                            .statusBar(style: .darkContent)
                    }
                }
            }
        }
        .statusBar(style: .lightContent)
    }
}

In general, the innermost status bar style in the view hierarchy is applied.

示例

仓库中有 2 个示例项目(StoryboardBased, SwiftUIBased),因此在您的项目中使用时请参考它们。

基于 Storyboard

StoryboardBased

基于 SwiftUI

SwiftUIBased

许可证

本项目是在 MIT 许可证的条款下提供的。 请参阅 LICENSE 文件。