如何在 iOS 6 和 iOS 7 中通过故事板使用 UIContainerView 支持导航栏?
我正在将 iOS 6 应用程序更新到 iOS 7,但希望继续支持 iOS 6。我有一个嵌入在 UINavigationController 中的主顶层视图。导航控制器中的视图中有一个容器视图。我正在使用故事板来布置视图。
在 iOS 7 上,导航控制器使用整个屏幕,我将其设置为将容器视图内容放在导航栏下方。在 iOS 6 中,视图的内容不在导航栏下方,因此导航栏下方有一个空白。
通常我会在 iOS6 上重置有问题的视图的来源(在 ViewDidLoad 或类似的地方),然后继续我的方式。但是,由于我的内容位于 UIContainerView 中,因此加载后我似乎无法更改框架。(我在prepareForSegue中试过这个:加载UIContainerView时。我愿意做错了吗?呵呵)
我发现的最接近的是在 iOS 7 下使用以下代码使导航栏不透明并使其下方的内容远离,然后将整个空间用于我的 UIContainerView。
// tell the view to not extend below this nav bar
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
self.edgesForExtendedLayout = UIRectEdgeNone;
此解决方案有效,但具有将状态栏显示为黑色的副作用(因为它在状态栏下方或多或少是“空白”)。或者,如果我将容器视图的顶部边缘放在状态栏下方,在 iOS 6 上,我在导航栏下方有一个很大的间隙。
我可以取消使用导航控制器,但在这种情况下似乎有点笨拙,我想将其用作最后的手段。