iOS 6导航栏位于状态栏下方。

3
我正在编写一个应用程序,需要支持iOS 6和7。在iOS 7上,应用程序看起来很好,但在iOS 6上,导航栏会出现在状态栏下面,我不知道为什么。所有的屏幕都会出现这个问题。
我已经尝试将状态栏设置为不透明,但是我尝试过的所有方法都无法使其变为不透明,我认为可能将其设置为不透明会让它向下移动(但我更喜欢保持其半透明)。
我正在运行Xcode 5.1.1,我有自己的导航控制器实现,但它只是设置了self.navigationBar.tintColor = THEME_COLOUR;(以及一些其他在iOS 7中执行的操作,但这里不执行)。
在storyboard中,我取消了“在顶部栏下方”选项,并且我已经尝试调整UINavigation bar的外观属性,但似乎没有任何影响。

1
你需要在你的Storyboard中调整iOS6/7的差异(右侧面板,尺寸检查器,将DeltaY设置为20)。 - rdurand
当我点击ViewController的视图并查看大小检查器时,似乎无法获得Delta调整设置,我只能获得自动布局内容(我正在使用它)。 - Fonix
你需要选择具体的视图并按照每个视图的基础处理差异。 - rdurand
是的,我本来想这么做的,但是启用自动布局后,我现在已经了解到iOS 6/7的增量已被禁用,所以我没有使用增量的选项。 - Fonix
哦,对了...我已经在所有非仅限于iOS7的项目上禁用了自动布局,所以我不确定如何帮助你,抱歉... - rdurand
显示剩余2条评论
1个回答

1

我不确定为什么,但我通过手动将导航栏下移至我的根视图控制器中来解决了这个问题,代码如下:

if( ! IS_OS_7_OR_LATER){

    CGRect navFrame = self.navigationController.navigationBar.frame;
    navFrame.origin.y += 20;
    self.navigationController.navigationBar.frame = navFrame;
}

似乎与我的登录视图有一个隐藏的导航栏有关,然后我的根视图取消隐藏导航栏,但我不确定确切的情况。但幸运的是,我只需要在根视图中使用该代码,它似乎影响了所有后续视图(可能是因为状态栏和导航栏在故事板中被推断出来)。

如果你使用Storyboards,你可以通过选择你的视图,进入Size Inspector,并适当设置"IOS 6/7 Deltas"来完成。无需添加任何代码! - rdurand
不要使用自动布局,根据问题评论中的讨论。 - Fonix
哦,对了...我没有看到这些评论...那么抱歉我的无用评论 :) - rdurand

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接