我的视图没有导航栏,但我想在状态栏下显示内容。我检查了顶部条形下的延伸边缘,在我的视图控制器中的不透明条形下,我要在状态栏下显示的视图对顶部布局指南有0垂直间距约束,但是,这仍然是我得到的: / p>
状态栏有20px纯白色背景,我不想要。我希望我的视图在状态栏下重叠,就像下面的模型一样:
我怎么能这样做,没有有一个可见的导航栏(我仍然拥有它,因为我的视图保证在导航控制器内,但它永远不会显示为我有很多自定义设计的部分,包括顶部栏?)
答案 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中完全执行此操作。
使用Top Space to Container Margin
约束而不是Top Space to Safe Area
约束将状态栏下所需的视图固定到主视图。
然后在主视图的“大小”检查器上,取消选中“安全区域相对边距”。
答案 2 :(得分:2)
在视图控制器或父视图控制器上,您必须将automaticallyAdjustsScrollViewInsets
设置为NO
。之前的答案有点像黑客攻击,因为框架提供了一个控制此行为的属性。