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

iOS 8 - Set Status Bar Color (when your UINavigationBar has a nil backgroud image)

我在我的应用程序中使用了一个视图寻呼机(特别是 ICViewPager)。像这样使 View Pager 融入导航栏:

我不得不将这些代码行放入我的 AppDelegate.m

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

但是,这会导致状态栏与我的导航栏颜色不同。

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

How do I set the color of my status bar to be the same as my navigation bar?

你不知道。状态栏没有颜色。它是透明的。你的工作是让一些具有所需颜色的视图延伸到视图的顶部,在状态栏后面,这样颜色就会显示出来。

此视图可以是您的 window,例如,或视图控制器的主视图。现在,它是白色的,所以我们看到白色显示在导航栏顶部上方。如果你给你的window(或主视图,或者我们看到的任何白色东西)与导航栏相同的颜色,你会得到你想要的效果。

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

您可以更改状态栏的样式

typedef enum : NSInteger {
    UIStatusBarStyleDefault,
    UIStatusBarStyleLightContent,

    UIStatusBarStyleBlackTranslucent,
    UIStatusBarStyleBlackOpaque
} UIStatusBarStyle;

//
@implementation ViewController

- (UIStatusBarStyle)preferredStatusBarStyle {
     return UIStatusBarStyleLightContent;
}
@end
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
    }
}

给你