iphone - 状态栏未按预期在 iPad 上呈现

标签 iphone objective-c uinavigationcontroller ios7 xcode5

我正在努力解决 ios7/objective-c 问题,希望有人能够帮助我。

作为一些背景,我有一个应用程序在 io6 设备上按预期呈现,但我试图使其符合 ios7。

让事情变得困惑的是,我的代码在 iPhone 上按预期工作,但在 iPad 上却没有。

从下面的图片中,您会看到状态栏(运营商、时间、电池)在 iPhone 上按预期呈现,但在 iPad 上却没有:

First the iPhone

Now the 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/

相关文章:

iOS NSFileManager 使用 URL 而不是路径将文件存储在文档目录中?

iphone - 如何开始为 tableView 中的每个单元格制作 .gif 动画?

objective-c - Ios 使用按钮进入下一个 View ,而不使用导航 Controller

iphone - NSInvocationOperation 和 NSBlockOperation 有什么区别

ios - 设置导航栏按钮的目标

iphone - UIViewController:检测向下钻取和向上钻取

iphone - 如何在Cocos2D中的多个场景中访问一个ivar?

iphone - 如何使用 graph api 编辑 facebook 事件?

ios - 在后台播放声音

ios - 如何比较 Swift 3 中的 UIViewController?