UINavigationController NavigationBar视图顶部的额外空间

时间:2016-09-01 20:40:13

标签: ios objective-c uiviewcontroller uinavigationcontroller

我使用UINavigationController作为我的根视图并将UIViewController实例推送到堆栈。

我的视图控制器全部来自基础,它在viewWillAppear期间绘制径向渐变背景。

将NavigationBar.translucent属性设置为NO / false时,推入堆栈的第一个视图控制器将其视图框架的y组件设置为NavigationBar的高度,从而有效地在导航栏和视图内容之间创建空白区域。后续视图控制器被推入堆栈没有这个问题。

我在我的导航控制器中覆盖了pushViewController,如果navigationController.viewControllers数组为空,则将NavigationBar.translucent设置为YES。这样做可以摆脱第一个视图控制器上的空间,但这并不是我想要的,因为我不想要半透明的导航条。

我在各个生命周期阶段打印出视图的框架,只有第一个视图修改了y组件,其他视图的框架y设置为0.我没有在任何视图控制器中修改根视图框架。

我的问题是,我做错了什么?我知道这是第一个视图控制器的问题,因为我的覆盖,但由于我没有看到关于这个的大量帖子,我认为我做错了。

我的问题与此类似:Container View getting pushed down as if it had a UINavigationBar?

1 个答案:

答案 0 :(得分:0)

您需要将Adjust Scroll View Insets设置为false。要修复它,请尝试:

InterfaceBuild: https://stackoverflow.com/a/26567240/846780

代码: self.automaticallyAdjustsScrollViewInsets = NO;