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

时间:2013-09-25 19:40:15

标签: 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所示的所有建议而没有任何运气。

我所拥有的使App按预期呈现的是我的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一样呈现白色。

有什么建议吗?

P.S。我不确定这是否有助于指明正确的方向,但iPad正在使用splitview控制器。

由于

4 个答案:

答案 0 :(得分:8)

由于状态栏将使用根视图控制器的首选项,因此调整导航控制器的首选状态栏样式将无法在iPad上运行,因为它们都不是根视图控制器。因此,您必须覆盖preferredStatusBarStyle的子类中的UISplitViewController

@implementation DGBaseSplitViewController

- (void)viewDidLoad {
    [super viewDidLoad];
}

- (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

@end

答案 1 :(得分:5)

根据Wayne的推荐对SplitViewController进行子类化,可能是一个有效的解决方案,但这就是我最终做的,为我的目的解决了这个问题。

  1. 设置UI状态栏隐藏= TRUE(我不想打开状态栏 启动屏幕)[存储在.plist中 UIStatusBarHidden = true& UIStatusBarHidden~ipad = true]

  2. 在.plist中设置 - UIStatusBarStyle = UIStatusBarStyleLightContent

  3. 在.plist中设置 - UIViewControllerBasedStatusBarAppearance = false

  4. 在我的AppDeligate中,靠近顶部,我添加了一行:

    [UIApplication sharedApplication] setStatusBarHidden:NO];

    在显示初始屏幕后,它会负责重新显示状态栏。

答案 2 :(得分:0)

尝试将Status bar style~ipadUIStatusBarStyleLightContent放入info.plist。

答案 3 :(得分:0)

组合:

  1. 查看基于控制器的状态栏外观=否

  2. 状态栏样式= UIStatusBarStyleLightContent

  3. 为我工作