我看到当我将我的应用程序迁移到 iOS 7 时,在呈现视图控制器时导航栏出现在状态栏下方。我想很多人都遇到过同样的问题。这是我所看到的屏幕截图:
要求:
新视图必须“模态”出现,即我需要presentViewController。
显示某种导航栏或工具栏,状态栏采用导航栏 ala iOS 7 样式的背景颜色。
它必须在 iOS 6 上运行。
我正在使用 xib 来处理布局,并启用了自动布局。
选项:
A. 将您的视图框架向下移动一点。
呃,我们是不是又回到了 iOS 之前的 5 天并开始使用框架?此外,与自动布局混合通常不是一个好主意。
B. 在导航栏下方的顶部添加一个小间隙。
选项 A 和 B 的一个缺点是状态栏不会融入您的导航:
C. 以编程方式添加约束。
主要缺点是您必须处理约束并计算导航和状态栏高度。呸。
D. 拉伸导航栏/工具栏的高度以包括状态栏的区域。
在 iOS 7 上看起来不错,但在 iOS 6 上会中断。您需要以编程方式更新导航栏的高度,并确保视图的其余部分正确更新。乱。
E. 与 IB 中的 iOS6/7 增量混淆。
多个缺点:您将对 ios6/7 增量进行硬编码。也不适用于自动布局。
F. 使用嵌套的 UINavigationController。
这是我选择的解决方法。请参阅下面的答案。