如何在iOS 7中以编程方式将UIViewControllerBasedStatusBarAppearance更改为YES/NO?

kag*_*noj 5 iphone uistatusbar ios7

我的应用程序背景较暗,但在iOS 7中,状态栏变得透明.所以我看不到任何东西,角落里只有绿色电池指示灯.如何将状态栏文本颜色更改为绿色或橙色,就像在主屏幕上一样?

我知道

  1. 在plist中设置UIViewControllerBasedStatusBarAppearancetoYES

  2. viewDidLoad做一个[self setNeedsStatusBarAppearanceUpdate];

  3. 添加以下方法:

    -(UIStatusBarStyle)preferredStatusBarStyle{ 
        return UIStatusBarStyleLightContent; 
    }
    
    Run Code Online (Sandbox Code Playgroud)

如何以UIViewControllerBasedStatusBarAppearance编程方式更改?

提前致谢...

121*_*8GG 10

正如其他人所提到的那样,在你的应用程序的info.plist中添加"查看基于控制器的状态栏外观"并将其设置为Type:Boolean和Value:NO

供您参考:

截图

在iOS 9中

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:NO];
Run Code Online (Sandbox Code Playgroud)

方法已弃用.

所以你可以使用这个:

application.statusBarStyle = UIStatusBarStyleLightContent;
Run Code Online (Sandbox Code Playgroud)

在方法中添加这行代码

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
Run Code Online (Sandbox Code Playgroud)

它存在于appDelegate.m文件中.这将在整个应用程序中更改状态栏文本颜色.

因此,如果您有任何背景可能是暗或亮的屏幕,那么在该屏幕中您可以通过以下方式使用状态栏颜色:

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.


gun*_*nas 9

在Info.plist中,将"查看基于控制器的状态栏外观"设置为NO.

然后,在didfinishlaunchingwithoptions方法的appdelegate.m类中添加它.

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:NO];
Run Code Online (Sandbox Code Playgroud)

这适用于ios 7.