导航栏隐藏状态栏

时间:2013-09-18 00:49:56

标签: iphone ios uinavigationcontroller uinavigationbar uistatusbar

就像标题所说的那样,我有一个隐藏状态栏的导航栏。我一直在模拟器上运行我的应用程序,最近开始在设备iPhone 4s iOS7上运行它,并注意到状态栏被隐藏或隐藏,只有你能看到的是绿色电池寿命。我认为它被隐藏的原因是我的一个视图控制器中有一个搜索栏,当我使用搜索栏时,你可以看到状态栏,单元格提供者,时间等。

我做过的事情,看我是不是不小心做到了:

Checked the Target-> Deployment Info ->Status Bar Style. It is in Default.

Checked each xib file to see if the status bar is set to none. All of them are at Default.

Searched the keyword "hidden" in all my .m files.

有人有什么建议吗?我在这里搜索过,只看到有关人们实际想要隐藏它而不修复它的帖子。如果有人遇到过类似的事情,我愿意尝试任何事情。

答案:

I was using a navigation bar image and the sizes were different. 
I was using iOS6 bar size, 32x32, but now I am using 88x64 and 
that fixed it for iOS7. How do I check if phone is iOS6 or iOS7?

2 个答案:

答案 0 :(得分:2)

状态栏未隐藏。在iOS 7上,状态栏始终可见,它与iOS 6及更早版本的应用程序重叠。这是新的“正常”行为。状态栏不再具有背景颜色。它是清晰背景上的黑色文字(UIStatusBarStyleDefault)或清晰背景上的浅色文字(UIStatusBarStyleLightContent)。

如果您将状态栏外观更改为Light Content,您将能够在深色背景上看到状态栏。

状态栏外观是根据两个互斥的基本路径之一控制的:您可以以传统方式以编程方式设置它们,或者UIKit将根据UIViewController的一些新属性为您更新外观。后一个选项默认启用。检查应用程序的plist值是否为“基于ViewController的状态栏外观”,以查看您正在使用的那个。如果将此值设置为YES,则应用中的每个顶级视图控制器(标准UIKit容器视图控制器除外)都需要覆盖preferredStatusBarStyle,返回默认值或轻盈的风格。如果您将plist值修改为NO,则可以使用熟悉的UIApplication方法管理状态栏外观。

答案 1 :(得分:0)

我知道它的knida为时已晚,但这种方法解决了状态栏的问题:

我做的是设置

   self.view.backgroundcolor=[UIcolor WhiteColor];

然后在主视图中创建一个子视图,其宽度和高度与self.view相同,然后相应地修改其框架,如:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
    if(self.customView.frame.origin.y == 0) {
        CGRect viewBounds = [self.customView bounds];
        viewBounds.origin.y = 20;
        viewBounds.size.height = viewBounds.size.height - 20;
        self.customView.frame = viewBounds;
    }

}