【问题标题】:iOS 6 navigation bar is under status bariOS 6 导航栏在状态栏下
【发布时间】:2014-04-30 09:25:49
【问题描述】:

所以我正在编写一个需要支持 ios 6 和 7 的应用程序,该应用程序在 iOS 7 中看起来不错,但在 iOS 6 上由于某种原因导航栏位于状态栏下方,我不知道为什么。它发生在我所有的屏幕上

我已经尝试将状态栏设置为不透明,但我尝试过的所有操作仍然让它保持半透明,我想也许让它不透明会使它向下移动(不过我更愿意让它保持半透明)

运行 Xcode 5.1.1

我实现了自己的导航控制器,但它所做的只是设置self.navigationBar.tintColor = THEME_COLOUR;(以及在 iOS 7 中的一些其他内容,但在此处不执行)

在情节提要中,我取消了“顶部栏下”的勾选,并且我弄乱了 UINavigation 栏外观属性,但似乎没有任何影响

【问题讨论】:

  • 您需要在故事板中调整 iOS6/7 增量(右侧面板,大小检查器,为 DeltaY 设置 20)
  • 当我点击视图控制器的视图并查看尺寸检查器时,我似乎没有获得增量调整设置,我只得到自动布局的东西(我正在使用)
  • 如果我点击实际的视图控制器,它只有一个模拟大小的选项,目前设置为固定
  • 您需要选择放错位置的特定视图并按视图处理增量。
  • 是的,我会,但启用自动布局后,我现在读到 iOS 6/7 delta's 已禁用,所以我没有使用 delta's 的选项

标签: ios objective-c


【解决方案1】:

所以我不知道为什么,但我通过在我的根视图控制器中手动向下移动导航栏来解决问题,如下所示:

if( ! IS_OS_7_OR_LATER){

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

这似乎与我的登录视图有一个隐藏的导航栏有关,然后是我的根视图取消隐藏导航栏,但我不确定到底是什么。但幸运的是,我只需要根视图中的代码,它似乎会影响所有后续视图(可能是因为在情节提要中推断出状态栏和导航栏)

【讨论】:

  • 如果您使用情节提要,您可以通过选择视图、转到 Size Inspector 并适当地设置“iOS 6/7 Deltas”来实现。无需添加任何代码!
  • 不是如果您使用自动布局,根据问题 cmets 中的讨论
  • 哦,对了..我没有看到这些cmets..对不起,那无用的评论:)