【发布时间】:2016-05-20 10:57:08
【问题描述】:
我创建了一个应用程序,它需要在导航栏和其他视图上方有一个栏。为了实现这一点,我使用了一个视图控制器,顶部栏有一个视图,然后是其他所有内容的容器视图。有时,需要隐藏顶部栏。我正在使用自动布局隐藏顶栏(将其高度设置为 0),并且容器视图扩展以填充屏幕(容器顶部等于顶栏底部)。容器视图包含一个导航控制器,因为有时我需要顶部栏下方的导航栏。当我启动应用程序时,一切正常,如下所示:
如您所见,导航栏保持所需的高度,该高度已扩展为包括状态栏
但是,当点击顶部栏时,我使用 segue 从我的根视图控制器(而不是容器)呈现(而不是推送)视图控制器,然后我查看与导航栏相同的屏幕,导航栏不再扩展,它与状态栏重叠,如下所示:
为什么展示视图控制器会破坏这一点?那么我该如何纠正或防止它呢?
我可以做的一个可能的解决方案是从容器视图中显示一个视图控制器,这很有效,我只需将容器中的当前视图控制器设置为根控制器的委托,这样当顶部栏被点击,它告诉容器中的视图控制器呈现新的视图控制器。然而,这不是我的第一选择,尤其是在其他情况下会导致此问题。
感谢您的帮助!
【问题讨论】:
标签: ios swift uinavigationcontroller uinavigationbar uicontainerview