【问题标题】:How to set status bar style to light content on iOS7?如何在 iOS7 上设置状态栏样式以点亮内容?
【发布时间】:2014-03-20 20:10:55
【问题描述】:

我尝试了 SO 的几种解决方案来解决这个问题,但没有一个对我有用。我用一个简单的视图创建了一个新的 iOS7 项目。我试过设置

View controller-based status bar appearance to NO

在 AppDelegate 中:

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

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

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

我使用的是最新的 xcode 版本。

【问题讨论】:

  • 这发生在我身上,我通过在 info.plist 中将状态栏最初隐藏为 NO 来修复它,除了您评论的 2 个步骤

标签: xcode ios7


【解决方案1】:

你试过没有“Animated:No”吗?

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

UIViewControllerBasedStatusBarAppearance,设置值NO

然后在 appdelegate.m 中

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

[application setStatusBarStyle:UIStatusBarStyleLightContent];
}

这应该将其设置为应用范围。

【讨论】:

  • 这会禁用状态栏,它对我来说已经消失了。
  • 我刚刚尝试过并为我工作。我在 iOS 7.1 和 Xcode 5.1
  • 好的,它可以在没有情节提要的情况下工作。但是,当我添加故事板时,这不再起作用了。
  • 奇怪。我正在使用情节提要并使用实用程序模板进行了尝试,并且它更改了两个 VC 上的状态栏内容。重新启动可能会有所帮助。
【解决方案2】:

接受的答案有时似乎有效。我发现 UIViewController 也可以更改状态栏样式。为了解决这个问题并始终工作,因为我不需要 UIViewControllers 控制状态栏,我必须在我的 Info.plist 中将 UIViewControllerBasedStatusBarAppearance 设置为 NO

【讨论】:

  • 你是我的新朋友。嗨,朋友。
【解决方案3】:

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

[self setNeedsStatusBarAppearanceUpdate];

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

- (UIStatusBarStyle) preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

【讨论】:

  • 是的,最后就是这样 - 故事板设置完全被忽略了!
【解决方案4】:

我会同意洛根的回答。从 iOS 9 开始,UIApplication 的 setStatusBarStyle: 方法无论如何都已被弃用,因此您将希望不再使用它。现在首选的方法是在您的ViewController 中实现preferredStatusBarStyle,就像Logan 所描述的那样。

【讨论】:

    猜你喜欢
    • 2014-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多