iOS 8 – 设置状态栏颜色(当你的UINavigationBar没有背景图像时)

我在我的应用程序(特别是ICViewPager)中使用查看传呼机。 为了使查看传呼机混合到像这样的导航栏:

在这里输入图像说明

我不得不把这些代码行放在我的AppDelegate.m

 [[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault]; [[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]]; 

但是,这会导致状态栏与我的导航栏不一样。

如何将我的状态栏的颜色设置为与我的导航栏相同?

如何将我的状态栏的颜色设置为与我的导航栏相同?

你没有。 状态栏没有颜色 。 它是透明的。 这是你的工作,使一些看法,以期望的颜色延伸到视图的顶部, 状态栏后面 ,以便该颜色显示。

这个视图可以是你的窗口,或者视图控制器的主视图。 现在,它是白色的,所以我们看到通过导航栏上方显示的白色。 如果你给你的窗口(或主视图,或任何白色的东西,我们正在看)与导航栏相同的颜色,你会得到你想要的效果。

或者,您可以调整导航栏本身的大小和位置,使其到达窗口顶部并覆盖它。

 override func viewWillAppear(animated: Bool) { //Status bar style and visibility UIApplication.sharedApplication().statusBarStyle = .LightContent //Change status bar color let statusBar: UIView = UIApplication.sharedApplication().valueForKey("statusBar") as! UIView if statusBar.respondsToSelector(Selector("setBackgroundColor:")) { statusBar.backgroundColor = customRed } } 

干得好

你可以改变状态栏的风格

 typedef enum : NSInteger { UIStatusBarStyleDefault, UIStatusBarStyleLightContent, UIStatusBarStyleBlackTranslucent, UIStatusBarStyleBlackOpaque } UIStatusBarStyle; // @implementation ViewController - (UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent; } @end