How to change UIViewControllerBasedStatusBarAppear

2019-05-06 16:24发布

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...

2条回答
一纸荒年 Trace。
2楼-- · 2019-05-06 16:42

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.

查看更多
地球回转人心会变
3楼-- · 2019-05-06 16:46

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:

screenshot

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.

查看更多
登录 后发表回答