背景说明:  状态栏可分为前后两部分,前景部分包括电量,时间,网络等,后景色是下面的底色,状态栏的高度是20像素

下面介绍更改状态栏的三种方法:

1.在状态栏的位置添加一个view,设置view的颜色,这个颜色就可以作为状态栏的底色

UIView *barView = [[UIView alloc] initWithFrame:CGRectMake(0, -20, self.view.frame.size.width, 20)];
    barView.backgroundColor = [UIColor blueColor];
    [self.navigationController.navigationBar addSubview:barView];

 

2.设置Navigation bar的barstyle会影响status bar的字的颜色和背景色(但是只有黑白两种)

self.navigationController.navigationBar.barStyle = UIBarStyleBlack;

 

3.自定义一个UINavigationController的子类,在子类中重写这个方法:

- (UIStatusBarStyle)preferredStatusBarStyle
{
    UIViewController* topVC = self.topViewController;
    return [topVC preferredStatusBarStyle];
}

在ViewController中重写下面这个方法:

-(UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

在viewDidLoad中调用:[self setNeedsStatusBarAppearanceUpdate];

注:setNeedsStatusBarAppearanceUpdate 只会调用 navigationController 中的 preferredStatusBarStyle 方法