在状态栏下没有导航栏的情况下扩展 UIViewController 的视图
Extend UIViewController's view without a navigation bar under status bar
我的视图没有导航栏,但我想在状态栏下显示内容。我已经检查了顶部栏下的延伸边缘,在我的视图控制器中的不透明栏下,我想在状态栏下显示的视图对顶部布局指南具有 0 垂直间距约束,但是,这仍然是我得到的:
状态栏有 20px 纯白背景,我不想要。我希望我的视图在状态栏下重叠,就像下面的模型一样:
我该怎么做,没有 可见的导航栏(我仍然有它,因为我的视图保证在导航控制器内,但它永远不会可见因为我有很多定制设计的部分,包括顶部栏)?
在调查了数十页数小时后,我找到了答案:
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。
在视图控制器或父视图控制器上,您必须将 automaticallyAdjustsScrollViewInsets
设置为 NO
。之前的答案有点乱,因为框架提供了一个 属性 来控制这种行为。
如果您正在使用安全区域布局指南,您可以在 Interface Builder 中完全做到这一点。
使用 Top Space to Container Margin
约束而不是 Top Space to Safe Area
约束将状态栏下所需的视图固定到主视图。
然后在主视图的大小检查器上,取消选中安全区域相对边距。
我的视图没有导航栏,但我想在状态栏下显示内容。我已经检查了顶部栏下的延伸边缘,在我的视图控制器中的不透明栏下,我想在状态栏下显示的视图对顶部布局指南具有 0 垂直间距约束,但是,这仍然是我得到的:
状态栏有 20px 纯白背景,我不想要。我希望我的视图在状态栏下重叠,就像下面的模型一样:
我该怎么做,没有 可见的导航栏(我仍然有它,因为我的视图保证在导航控制器内,但它永远不会可见因为我有很多定制设计的部分,包括顶部栏)?
在调查了数十页数小时后,我找到了答案:
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。
在视图控制器或父视图控制器上,您必须将 automaticallyAdjustsScrollViewInsets
设置为 NO
。之前的答案有点乱,因为框架提供了一个 属性 来控制这种行为。
如果您正在使用安全区域布局指南,您可以在 Interface Builder 中完全做到这一点。
使用 Top Space to Container Margin
约束而不是 Top Space to Safe Area
约束将状态栏下所需的视图固定到主视图。
然后在主视图的大小检查器上,取消选中安全区域相对边距。