How to change UIViewControllerBasedStatusBarAppear

2019-05-06 16:47发布

问题:

My application has a dark background, but in iOS 7 the status bar became transparent. So I can't see anything there, only green battery indicator in the corner. How can I change the status bar text color to Green or Orange like it is on the home screen?

I know about

  1. Set the UIViewControllerBasedStatusBarAppearance to YES in the plist

  2. In viewDidLoad do a [self setNeedsStatusBarAppearanceUpdate];

  3. Add the following method:

    -(UIStatusBarStyle)preferredStatusBarStyle{ 
        return UIStatusBarStyleLightContent; 
    }
    

How can I change UIViewControllerBasedStatusBarAppearance programmatically?

Thanks in advance...

回答1:

In Info.plist set 'View controller-based status bar appearance' as NO.

then,add this in your appdelegate.m class in didfinishlaunchingwithoptions method.

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:NO];

this works for ios 7.



回答2:

As mention by others add "View controller-based status bar appearance' in your application's info.plist and set it to Type: Boolean and Value: NO

For your ready reference:

In iOS 9

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:NO];

method is deprecated.

So you can use this:

application.statusBarStyle = UIStatusBarStyleLightContent;

add this line of code in method

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

which is present in appDelegate.m file. This will change the status bar text color throughout your application.

So if you have any screen which has background may be dark or light then in that screen you can the status bar color by making use of:

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;

Hope this helps.