导航栏上的iOS7状态栏

时间:2013-09-10 21:30:26

标签: iphone objective-c ios6 ios7 xcode5

我正在使用iOS7测试我的应用程序,我的状态栏有问题。基本上状态栏显示在导航栏上,如下图所示:

iOS7 Status Bar Issue

我尝试拨打viewDidLoad

 self.edgesForExtendedLayout = UIRectEdgeNone;
 self.automaticallyAdjustsScrollViewInsets = YES;

没有成功。

我还添加到info.plist文件UIViewControllerBasedStatusBarAppearance但没有运气。

主要问题是应用程序必须与iOS6和iOS7兼容,目前在iOS7上,视图从顶部移动了20px。

3 个答案:

答案 0 :(得分:9)

edgesForExtendedLayoutautomaticallyAdjustsScrollViewInsets只是父视图控制器如何布局/管理视图的标准。看起来你正在使用UINavigationBar,而不是UINavigationController,这意味着除非你对它们进行编码,否则这些属性不会做任何事情。

您可以切换为使用UINavigationController,也可以在iOS 7上以编程方式将UINavigationBar的高度从44更改为64.

答案 1 :(得分:5)

为UINavigationBar添加插座。

float currentVersion = 7.0;

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= currentVersion) {
    // iOS 7
    self.navBar.frame = CGRectMake(self.navBar.frame.origin.x, self.navBar.frame.origin.y, self.navBar.frame.size.width, 64);
}

您还可以隐藏状态栏,这可能是对这些视图更好的方法,以获得更多的屏幕空间。

我在这里回答:

Position of navigation bar for modal view - iOS7

答案 2 :(得分:0)

这是iOS 7带来的最大问题,有很多解决方案可以解决这个问题,但在我看来,最好的解决方法是删除导航栏并通过转到编辑器将视图控制器嵌入导航控制器中>嵌入导航控制器。