ios- Autolayout-为导航项添加约束方面

时间:2014-04-29 13:59:37

标签: ios autolayout

我刚刚开始将我的应用程序移动到autolayout。 我想约束导航栏下面的标签'0'像素。 我试过但没有找到解决方案。 这是屏幕截图。

在故事板中,我给了superview一个约束。

enter image description here

在IOS7中它可以正常工作。

enter image description here

但是在IOS6中它会在导航栏下方64像素,因为superview从导航栏下面开始。

enter image description here

如果我可以为导航栏下面的标签添加顶部约束,它将解决问题。但我无法找到如何做到这一点。我搜索了几个问题。但是他得到了答案。

请帮忙。

2 个答案:

答案 0 :(得分:10)

iOS 11更新:

iOS 11引入了安全区域的概念,并且容器的负担在可见区域中的所有内容再次位于视图的手中,而不是视图和控制器的探戈。

请参阅Apple的文档here

使用故事板或XIB时,它就像在Xcode中启用该功能一样简单。这是向后兼容的,应该在iOS 10及以下版本中按预期工作。在代码中,您将使用if (@available(iOS 11.0, *))来决定是否针对安全区域指南/锚点设置约束或使用旧系统上的旧版指南。


使用情节提要时,您需要在顶部布局指南中添加约束。这将解决您的问题,如在iOS6上,即0pt,在iOS7上,它是动态的。如果您使用的是nib / xib文件,它会变得更复杂一些;您需要在代码中添加约束。实现此目的的最简单方法是创建一个约为0垂直空间的约束,在代码中创建此约束的出口,并在viewDidLayoutSubviews中,将约束出口的constant更新为值{ self.topLayoutGuide.length

答案 1 :(得分:0)

您只需对约束进行一些修改:

1)为您的标签

提供高度限制

2)将标签固定到前导视图 - 水平空间约束

3)添加垂直空间约束

第3步必须小心[我附上图片供你参考。]

Adding Vertical Space Constraint

执行此操作后,请检查视图控制器上是否仍然存在红色箭头标记