如何在iOS7上将状态栏样式设置为轻量级内容?

Upv*_*ote 13 xcode ios7

我尝试了SO的几个解决方案来解决这个问题但是没有一个能为我工作.我用一个简单的视图创建了一个新的iOS7项目.我尝试过设置

View controller-based status bar appearance to NO
Run Code Online (Sandbox Code Playgroud)

在AppDelegate中:

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

但是,这会完全删除状态栏.

如果没有基于View控制器的状态栏外观选项,无论我在plist文件中为状态栏样式设置什么,状态栏文本仍然是黑色.我需要它为整个应用程序是白色的.这可能吗?

我是最新的xcode版本.

Obj*_*ift 38

没有"动画:否"你试过吗?

转到项目目标的信息选项卡,添加行:

UIViewControllerBasedStatusBarAppearance,设置值NO

然后在appdelegate.m

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

[application setStatusBarStyle:UIStatusBarStyleLightContent];
}
Run Code Online (Sandbox Code Playgroud)

这应该在应用程序范围内设置.

  • 这会禁用状态栏,它已经消失了. (2认同)

smi*_*t04 27

接受的答案似乎有时有效.我发现UIViewController也可以改变状态栏样式.为了解决这个问题,总是工作,因为我并不需要UIViewControllers控制状态栏,我不得不设置UIViewControllerBasedStatusBarAppearanceNOInfo.plist

  • 你是我的新朋友.你好,朋友. (2认同)

Log*_*gan 21

使用needsStatusBarAppearanceUpdate在更新状态栏viewDidLoad:视图控制器的方法

[self setNeedsStatusBarAppearanceUpdate];
Run Code Online (Sandbox Code Playgroud)

现在将以下方法添加到视图控制器:

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