我正在努力解决 ios7/objective-c 问题,希望有人能够帮助我。
作为一些背景,我有一个应用程序在 io6 设备上按预期呈现,但我试图使其符合 ios7。
让事情变得困惑的是,我的代码在 iPhone 上按预期工作,但在 iPad 上却没有。
从下面的图片中,您会看到状态栏(运营商、时间、电池)在 iPhone 上按预期呈现,但在 iPad 上却没有:
(注意:由于这是我的第一篇文章,我无法直接嵌入图片,对此深感抱歉)。
从编码的角度来看,我已经尝试了所有建议:How to change Status Bar text color in iOS 7没有任何运气。
我的 AppDeligate 中的以下定义使应用程序按预期呈现。
// News page
newsViewController = [[NewsViewController alloc] init];
newsNavigationController = [[UINavigationController alloc] initWithRootViewController:newsViewController];
newsNavigationController.navigationBar.translucent = NO;
newsNavigationController.navigationBar.barStyle = UIStatusBarStyleLightContent;
newsNavigationController.navigationBar.tag = 4013;
现在我认为问题在于,即使我已将条形样式设置为 UIStatusBarStyleLightContent
,这应该将文本显示为白色,但在 iPad 上却没有这样做。相反,它呈现为黑底黑字。
这似乎是这种情况,因为如果我删除该行:
newsNavigationController.navigationBar.translucent = NO;
黑色变为深灰色,可以看到载体、日期、电池,但在黑色中。我愿意接受深灰色和黑色背景,但状态栏项目需要像 iphone 一样呈现为白色。
有什么建议吗?
附言我不确定这是否有助于指出正确的方向,但 iPad 使用的是 splitview Controller 。
谢谢
最佳答案
因为状态栏将使用 Root View Controller 的首选项,调整导航 Controller 的首选状态栏样式在 iPad 上不起作用,因为它们都不是 Root View Controller 。因此,您必须在 UISplitViewController
的子类中覆盖 preferredStatusBarStyle
。
@implementation DGBaseSplitViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
@end
关于iphone - 状态栏未按预期在 iPad 上呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19013771/