在Swift中将UIStatusBarStyle更改为LightContent(白色)无效

3

我在尝试将状态栏颜色改为白色时遇到了很多麻烦。 我已经查看了与此相关的所有问题,但是没有一个解决方案似乎能正常工作。 目前我正在使用在info.plist中的键:"View controller-based status bar appearance" 设置为 NO 。 在我的AppDelegate.Swift文件中,我有:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.
    UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: false)
    return true
}

现在状态栏是白色的,但我在控制台中发现了一个错误:

错误:CGContextSaveGState:无效上下文0x0。如果您想查看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE环境变量。

有人已经成功地找到了一种干净的解决方法吗?任何提示都将不胜感激!

2个回答

3
如果您想在整个应用程序中使用轻量级内容样式,无需编写代码。您已经将“基于视图控制器的状态栏外观”更改为NO,现在您需要做的就是在项目导航器窗格中选择您的项目,然后选择“常规”选项卡,并查找“状态栏样式”下拉菜单 - 它位于“部署信息”部分的设备方向正下方。
如下面的截图所示,只需将其更改为Light即可完成。 Changing status bar style to light

这个可以运行,我已经从AppDelegate.swift中删除了代码,但是控制台仍然会显示那些错误。 - KexAri
很高兴它能正常工作,请将答案标记为正确,以便其他人可以轻松找到它!如果错误仍然存在,a)可能是您代码中的其他问题导致的(而不是状态栏),或者b)这是一个苹果的问题。苹果确实有一种倾向,会留下奇怪的错误消息,这可能会让人感到困惑。 - TwoStraws
我还没有其他的代码。如果在plist中没有这个键,则该栏保持黑色。如果plist中有该键,则它可以工作,但是我会收到那个错误消息...看起来很奇怪。 - KexAri

1

这个问题的答案已经过时。

'setStatusBarStyle(_:animated:)' 在iOS 9.0中已被弃用:请使用 -[UIViewController preferredStatusBarStyle]。

使用方式如下:

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接