首页 > 解决方案 > 如何在 MoreTabBarController 中将 UIStatusBar 颜色更改为 .lightContent

问题描述

我有一个UITabBarController超过 5 个UIViewControllers。我已将值设置为info.plist我已将ViewController基于状态栏外观的值设置为YES.

在此处输入图像描述

所有的 UIViewControllers 都有值

UIApplication.shared.statusBarUIView?.backgroundColor = customColor
self.setNeedsStatusBarAppearanceUpdate()

在 viewDidLoad 中,customColor 是深蓝色。我还覆盖了preferredStatusBarStyle 变量以显示内容。

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

所有 UIViewController 都显示 lightContent 状态栏。我在 MoreTabBarController 类中尝试过相同的方法,但它不起作用。我假设原因是因为它不是 UIViewController 而是 UITabBarController。

在此处输入图像描述

如何将状态栏颜色更改为 MoreTabBarController 中的浅色内容?

标签: iosswiftuitabbarcontrolleruistatusbar

解决方案


打开项目设置选项,您可以更改状态栏的样式:

在此处输入图像描述

接下来,回到 Storyboard,选择ViewController并在 Editor 菜单中选择 Embedin NavigationController。选择导航栏并在属性检查器中将栏色调设置为红色。构建并运行项目,状态栏的内容又变暗了,这是默认的。这样做的原因是,iOS 要求导航控制器的状态栏样式,而不是包含的ViewController. 要更改应用程序内所有导航控制器的样式,请更改文件中的以下方法AppDelegate.swift

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.

    UINavigationBar.appearance().barStyle = .blackOpaque
    return true
    }

推荐阅读