2013-09-28 144 views
58

我无法更改iOS 7 SDK状态栏中的文本颜色。目前它的黑色,我希望它在故事板中的所有视图控制器都是白色的。状态栏文本颜色iOS 7

我在StackOverflow上看到过几个问题,如THISTHISTHIS,但他们没有太大的帮助。也可能是由于我无法在我的plist文件中找到UIViewControllerBasedStatusBarAppearance为YES。

任何人都可以告诉我正确的方式来设置故事板中的所有视图控制器的状态栏文本颜色为白色吗?提前致谢!

回答

199

让我给你一个完整的回答你的问题。更改状态栏的文字颜色非常简单,但它在iOS 7中有点混乱,特别适合新手。

如果您想通过选择视图控制器并转到右侧的模拟度量标准来尝试在StoryBoard中将颜色从黑色更改为白色,那么它将无法工作,我不知道为什么。它应该像这样改变,但如何改变。

其次,你不会在你的plist中找到UIViewControllerBasedStatusBarAppearance属性,但默认情况下它不存在。您必须通过单击+按钮自行添加它,然后将其设置为NO。

ios 7 status bar text color

最后,你必须去你AppDelegate.m文件,并添加下面的didFinishLaunchingWithOptions方法中添加以下行:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 

这将改变颜色以白色为所有你的视图控制器。希望这可以帮助!

+3

KC。,我写完了,一切正常。但是当我在我的应用程序中打开例如相机胶卷时,它将状态栏文本颜色设置为黑色,并且当我在应用程序中关闭相机胶卷状态栏时,文本颜色为黑色。我试图通过在我的视图控制器中使用 - (UIStatusBarStyle)preferredStatusBarStyle来设置颜色。但由于未知的原因,它没有被调用。而现在我还没有找到解决办法。 – Oleg

+3

我和Oleg有同样的问题。似乎苹果图像选择器在处理时会覆盖默认设置,并在完成后拒绝切换。 – MattCheetham

+0

我在iPad上打开图像选取器弹出窗口时看到了同样的情况。假设有导航栏,它也会混乱我的视图坐标。解决方法是在popover关闭后重置所有内容。 – user1055568

16

默认为YES,所以你不会看到它。您需要添加

UIViewControllerBasedStatusBarAppearance 

到您的plist并将其设置为NO

然后就可以调用

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 
+0

'setStatusBarStyle:' 已过时:在iOS中9.0第一个弃用 - 使用 - [UIViewController preferredStatusBarStyle] –

42

如果您正在寻找UIViewControllerBasedStatusBarAppearance,你需要点击,当你将鼠标悬停在您的plist文件的根元素出现的小加号。

plist file

一旦你这样做,一个新的行会出现 - 从下拉列表中选择“查看基于控制器的状态栏外观”,并设置NO为它的价值。 (那友好的名称在内部宣布为UIViewControllerBasedStatusBarAppearance

接下来,调用下面的方法在您的应用程序代理应该在状态栏的颜色设置为白色的所有视图控制器:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 
23

设置UIViewControllerBasedStatusBarAppearance为YES在plist中

viewDidLoad[self setNeedsStatusBarAppearanceUpdate];

添加以下方法:

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
} 
+0

之前的答案很奇怪。不管怎样,谢谢!这对我有效。顺便说一句,如果这只更新viewdidload因此我必须调用此更新每个视图? – Teffi

+0

这为我工作,但KC的解决方案并没有工作,以及故事板方法没有工作 –

+0

这是什么工程,如果你有不同的亮度屏幕-ES – stackOverFlew