我需要让一个嵌入在UINavigationController中的特定ViewController具有灯状态栏的文本颜色(但其他ViewController的行为方式不同).我知道至少有3种方法,但是在我的情况下都不行.
> How to change Status Bar text color in iOS 7,方法主要是:
>在plist中将UIViewControllerBasedStatusBarAppearance设置为YES
>在viewDidLoad中做一个[self setNeedsStatusBarAppearanceUpdate];
>添加以下方法:
- (UIStatusBarStyle)preferredStatusBarStyle{ return UIStatusBarStyleLightContent; }
在iOS 7.0.3上运行,这种方法对我来说不起作用,因为即使我已经正确地实现了所有3个步骤,preferredStatusBarStyle也不会被调用.
> UIStatusBarStyle PreferredStatusBarStyle does not work on iOS 7,方法主要有:
将您的导航栏的barStyle设置为UIBarStyleBlackTranslucent将给出白色状态栏文本(即UIStatusBarStyleLightContent),UIBarStyleDefault将给出黑色状态栏文本(即UIStatusBarStyleDefault).
这种方法在iPhone上运行平稳,但不在iPad上.
>将UIViewControllerBasedStatusBar外观设置为pl,然后使用
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
这显然不适用于这种情况,因为我需要为两个ViewController指定不同的状态栏颜色.
感谢所有帮助!
解决方法
对于有UINavigationController的这个问题的人,我可以建议创建一个自定义的UINavigationController并在其上实现preferredStatusBarStyle:
- (UIStatusBarStyle)preferredStatusBarStyle { return [self.topViewController preferredStatusBarStyle]; }
这样,状态栏样式将是顶视图控制器的.现在你可以实现视图控制器的preferredStatusBarStyle,无论如何你喜欢.