Autolayout:为superview添加约束而不是Top Layout Guide?

时间:2015-02-27 13:25:50

标签: ios storyboard autolayout nslayoutconstraint

我在故事板中的UIViewController中有一个UIView,我想在空间上添加约束,查看距离上边缘的距离。

现在,当我通常按ctrl +拖动到ViewController的主视图时,我只能选择将其设置为顶部布局指南。

这对我来说是一个问题,因为在应用程序的某一点我将主视图向上移动大约20-50px然后发生的是我不会移动的视图...因为它没有与superview对齐。

如何在故事板中手动执行此操作,还是必须以编程方式添加它?

我正在使用xcode 6。

7 个答案:

答案 0 :(得分:302)

约束常量值右侧有一个箭头。如果单击它,会弹出一个菜单,您可以在其中选择要对其进行约束的内容。如果您选择“查看”,则会将其固定在视图的顶部。

enter image description here

答案 1 :(得分:57)

您应该可以通过在故事板中突出显示所需的视图,然后在顶部菜单中选择Editor > Pin > Top Space to Superview来完成此操作。


  

这在XCode 7中已经过时,请参阅@ PaulGurov的答案。

答案 2 :(得分:12)

TL; DR:您可以通过按键盘上的 Alt 键约束边距。

还可以补充一点,如果您尝试固定的视图不是您要将其固定到视图的直接子视图,则建议的方法并不真正有效。让我们说视图层次结构看起来像那样,并且您希望将图像视图(在这种情况下为Parallax Image View)固定到视图控制器的视图(在这种情况下为View)。

enter image description here

要做到这一点,你只需控制 + 拖动Parallax Image ViewView。这会显示默认选项,您可以在其中Vertical Spacing to Top Layout GuideParallax Image View固定到顶部布局指南。

enter image description here

您想要的是将其固定在视图的顶部(边距)。要做到这一点,你必须按 Alt

切换到另一组约束

enter image description here

答案 3 :(得分:2)

我已经有了很多约束,我只是想改变它们而不是打破它们。如果你双击要编辑的约束,然后点击具有" .Margin"的项目,你可以关闭"相对于保证金"通过选择该项目。

Select the relative to margin

答案 4 :(得分:1)

Dan的回答有效。我只是想说明如果你在storyBoard中设置你的视图y< 20,并通过引脚面板配置约束,它将设置为superview:

enter image description here

enter image description here

答案 5 :(得分:0)

如果视图的高度意外设置为0,则不会显示“垂直空间到顶部布局指南”。然而,将出现垂直空间到底部布局指南,这对于Apple 2004年左右的某些人来说必定是有意义的。

答案 6 :(得分:0)

上述答案都没有对我有用,相反,我必须做一个黑客,用superview的顶部设置我的子视图顶部,而不是顶部布局指南。

  • 首先,使用superview垂直设置子视图中心。
  • 然后,将子视图的中心Y 约束以及超级视图更改为顶部约束。

你现在好了。