【发布时间】:2013-09-25 13:51:27
【问题描述】:
当我将我的应用程序迁移到 iOS 7 时,我看到在呈现视图控制器时导航栏出现在状态栏下方。我想很多人都遇到过同样的问题。这是我看到的截图:
要求:
新视图必须“模态”出现,即我需要 presentViewController。
显示某种导航栏或工具栏,状态栏采用 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。
这是我选择的解决方法。请参阅下面的答案。
【问题讨论】:
-
我有同样的问题,找不到一个干净的方法来快速迁移我的应用程序而不是太脏。我讨厌苹果说“我们决定你应该重写你的整个应用程序,请这样做。”
标签: ios objective-c uiviewcontroller ios7 statusbar