一尘不染

iOS自定义状态栏背景色不显示

swift

我正在尝试使用以下方法将状态栏背景色填充为橙色

UINavigationBar.appearance().tintColor = UIColor.orangeColor()
UINavigationBar.appearance().barTintColor = UIColor.orangeColor()
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]
UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)

但是,我从下面的示例中得到一个白色的状态栏,该栏应该用橙色填充:快速自定义导航栏外观

我在 didFinishLaunchingWithOptions* 方法下的 AppDelegate.swift
文件中进行设置,以将其应用于整个应用程序。
*

我已经将 info.plist 编辑为以下内容: View controller-based status bar appearance => NO

有人知道我在做什么错吗?

编辑:我不确定是否重要,但该视图在 UITabBarController中

编辑2:这实际上发生在所有视图中,而不仅仅是 UITabBarController

编辑3:谢谢 @Utsav Parikh

我现在在状态栏的顶部添加一个视图,在应用程序加载状态栏为橙色时会短暂显示一个视图,但是一旦加载完成,它将被推离该视图并由通用的白色状态栏取代。为什么会这样呢?

let view = UIView(frame: CGRect(x: 0.0, y: 0.0, width: UIScreen.mainScreen().bounds.size.width, height: 20.0))
view.backgroundColor=UIColor.orangeColor()
self.window!.rootViewController!.view.addSubview(view)

Swift 3 编辑:

UITabBarController

let view = UIView(frame: CGRect(x: 0.0, y: 0.0, width: UIScreen.main.bounds.size.width, height: 20.0))
view.backgroundColor = .orange
self.view.addSubview(view)

没有嵌入式控制器

我意识到有些人来到这里不仅是状态栏,还有导航栏,所以我学到了一些无需任何嵌入式控制器的技巧:

在您的 AppDelegate.swift中 添加此方法,然后在 didFinishLaunchingWithOptions中 调用它


func customizeAppearance() {
    UINavigationBar.appearance().barTintColor = UIColor.black
    UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
    UITabBar.appearance().barTintColor = UIColor.black
    let tintColor = UIColor(red: 255/255.0, green: 255/255.0, blue: 255/255.0, alpha: 1.0)

    UITabBar.appearance().tintColor = tintColor
}

阅读 272

收藏
2020-07-07

共1个答案

一尘不染

Swift 3 编辑:

使用 UITabBarController

let view = UIView(frame: CGRect(x: 0.0, y: 0.0, width: UIScreen.main.bounds.size.width, height: 20.0))
view.backgroundColor = .orange
self.view.addSubview(view)

没有嵌入式控制器

我意识到有些人来到这里不仅是状态栏,还有导航栏,所以我学到了一些无需任何嵌入式控制器的技巧:

在您的 AppDelegate.swift中 添加此方法,然后在 didFinishLaunchingWithOptions中 调用它


func customizeAppearance() {
    UINavigationBar.appearance().barTintColor = UIColor.black
    UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
    UITabBar.appearance().barTintColor = UIColor.black
    let tintColor = UIColor(red: 255/255.0, green: 255/255.0, blue: 255/255.0, alpha: 1.0)

    UITabBar.appearance().tintColor = tintColor
}

感谢 @Utsav, 我在 UITabBarController中 添加了以下子视图,现在看来它可以正常工作:

    let view = UIView(frame:
                    CGRect(x: 0.0, y: 0.0, width: UIScreen.mainScreen().bounds.size.width, height: 20.0)
                )
    view.backgroundColor = UIColor.orangeColor()

    self.view.addSubview(view)

的UITabBarController 似乎并没有在玩好 AppDelegate中
。如果有人有更好的方法,请告诉我,但是到目前为止,这是我已经解决的解决方案。

2020-07-07