模态视图的 iOS7 状态栏字体颜色

Posted

技术标签:

【中文标题】模态视图的 iOS7 状态栏字体颜色【英文标题】:iOS7 Status Bar Font Color for Modal View 【发布时间】:2014-02-04 22:56:25 【问题描述】:

我正在尝试将我的一个模态视图中状态栏的字体颜色更改为白色。其他视图在应用委托中设置为白色。

我已尝试在 ViewController 中类似问题的答案中找到以下代码。

 - (UIStatusBarStyle)preferredStatusBarStyle 

    return UIStatusBarStyleLightContent;

但这不起作用,因为字体仍然显示为黑色。

ios 领域的新手,如有任何建议,请提供帮助。

【问题讨论】:

How to change Status Bar text color in iOS 7的可能重复 【参考方案1】:

您需要结合使用当前代码并将 Info.plist 中的 View controller-based status bar appearance 键设置为 YES。

不过,这里缺少的一块拼图是,您还需要告诉 iOS 您想要更新状态栏:

- (void)setNeedsStatusBarAppearanceUpdate;

它是 UIViewController 上的一个方法。像这样在viewDidLoad 中调用它:

- (void)viewDidLoad

    [self setNeedsStatusBarAppearanceUpdate];
    ...

请注意,它仅适用于 iOS 7,并在 iOS 6 及更低版本上引发异常,因此在我的所有项目中,我都有这样的 #define

#define kIs7 ([[[UIDevice currentDevice] systemVersion] compare:@"7.0" options:NSNumericSearch] != NSOrderedAscending)

那么在 iOS 6 及更低版本上不运行仅限 iOS 7 的方法真的很简单:

if (kIs7) [self setNeedsStatusBarAppearanceUpdate];

【讨论】:

谢谢我错过了 plist 信息。我已经将代码输入到我的视图 controller.m 文件中,但是....仍然是黑色的。我的视图在故事板中,我的自定义类是否必须是视图控制器的名称?如果是,我会尝试填写它,但我认为它无法识别该文件,因为它不会自动填写名称。 我明白了!所以实际上一切都可以在 plist 中解决。 View Controller-based status 实际上必须设置为“NO”,并且需要添加另一个名为“Status bar style”的键,然后设置为不透明黑色。这会将所有视图控制器设置为始终为白色。【参考方案2】:

这就是您将状态栏颜色更改为白色的方式。如果它不起作用,那么您可能没有在 Info.plist 中启用基于视图控制器的状态栏外观。

确保添加以下键,并将其值设置为YES

View controller-based status bar appearance

【讨论】:

以上是关于模态视图的 iOS7 状态栏字体颜色的主要内容,如果未能解决你的问题,请参考以下文章

在iOS7中修改状态栏字体的颜色-b

iOS 7:模态视图控制器状态栏颜色错误,但普通视图控制器正确

Swift - 状态栏颜色显示(字体背景)

ios7以上自定义导航栏标题的字体大小及颜色的方法

模态视图导航栏的位置 - iOS7

状态栏如何修改字体颜色,电池颜色,WIFI颜色啊