在状态栏下没有导航栏的情况下扩展UIViewController的视图

时间:2015-02-06 14:18:11

标签: ios uiviewcontroller ios8

我的视图没有导航栏,但我想在状态栏下显示内容。我检查了顶部条形下的延伸边缘,在我的视图控制器中的不透明条形下,我要在状态栏下显示的视图对顶部布局指南有0垂直间距约束,但是,这仍然是我得到的: / p>

enter image description here

状态栏有20px纯白色背景,我不想要。我希望我的视图在状态栏下重叠,就像下面的模型一样:

enter image description here

我怎么能这样做,没有有一个可见的导航栏(我仍然拥有它,因为我的视图保证在导航控制器内,但它永远不会显示为我有很多自定义设计的部分,包括顶部栏?)

3 个答案:

答案 0 :(得分:4)

经过几十个小时的调查,我找到了答案:

for (NSLayoutConstraint *constraint in self.view.constraints) {
    if((constraint.firstItem == self.topLayoutGuide && constraint.secondItem == self.view) ||
       (constraint.secondItem == self.topLayoutGuide && constraint.firstItem == self.view))         {
        constraint.constant = -20;
    }
}

对于任何想知道的人,我没有使用特定的答案,而是来自这个问题的派生解决方案:iOS7 - View under status bar - edgesForExtendedLayout not working

答案 1 :(得分:3)

如果您使用的是“安全区域布局指南”,则可以在Interface Builder中完全执行此操作。

enter image description here

使用Top Space to Container Margin约束而不是Top Space to Safe Area约束将状态栏下所需的视图固定到主视图。

然后在主视图的“大小”检查器上,取消选中“安全区域相对边距”。

enter image description here

答案 2 :(得分:2)

在视图控制器或父视图控制器上,您必须将automaticallyAdjustsScrollViewInsets设置为NO。之前的答案有点像黑客攻击,因为框架提供了一个控制此行为的属性。