我正在尝试使用以下方法将状态栏背景色填充为橙色
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
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 }
使用 UITabBarController
感谢 @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中 。如果有人有更好的方法,请告诉我,但是到目前为止,这是我已经解决的解决方案。