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

时间:2014-01-29 07:06:25

标签: iphone ios7 uistatusbar

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

我知道

  1. 在plist中将UIViewControllerBasedStatusBarAppearance设为YES

  2. viewDidLoad执行[self setNeedsStatusBarAppearanceUpdate];

  3. 添加以下方法:

    -(UIStatusBarStyle)preferredStatusBarStyle{ 
        return UIStatusBarStyleLightContent; 
    }
    
  4. 如何以编程方式更改UIViewControllerBasedStatusBarAppearance

    提前致谢...

2 个答案:

答案 0 :(得分:9)

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

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

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

这适用于ios 7.

答案 1 :(得分:9)

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

供您准备参考:

screenshot

在iOS 9中

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

方法已弃用。

所以你可以使用它:

application.statusBarStyle = UIStatusBarStyleLightContent;

在方法

中添加这行代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

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

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

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;

希望这有帮助。