自动布局:将约束添加到超级视图而非“顶部布局指南”吗?


112

我在情节提要中的UIViewController中有一个UIView,我想在该空间上添加一个约束以查看与顶部边缘之间的距离。

现在,当我通过ctrl +拖动到ViewController的主视图来执行常规操作时,我只能得到将其设置为顶部布局指南的选项。

这对我来说是个问题,因为在应用程序中,我会在某个时刻将主视图向上移动20-50px,然后发生的事情是我所拥有的视图将不会移动...因为它不与超级视图对齐。

如何在情节提要中手动执行此操作,还是必须以编程方式添加它?

我正在使用xcode 6。


您可以拖放到左侧文档大纲中的正确实体吗?-此屏幕快照中的场景对象:ptgmedia.pearsoncmg.com/images/chap5_9780672335761/elementLinks/…–
Woodstock

我已经尝试过了,结果
还是

Answers:


306

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

在此处输入图片说明


6
哈利路亚!当他们删除了Editor-> Pin菜单时,我不知道该怎么办。
杰里米·希克斯

4
简直不敢相信我以前没有看到过。太棒了
zumzum

9
只是给那些像我这样笨拙的人的笔记->除非添加约束的视图不在顶部布局指南下方,否则您可能无法进行此更改。我在顶部布局指南上方有一个视图,并且下拉菜单中没有“顶部布局指南”选项。对于像我这样的非newb来说,这可能是“ duh”声明:)
Ryan James

2
这与那些小的Xcode细微之处有关。那做得太多了。:)
Marchy

只是一个简短的澄清就使我感到困惑:尽管勾选了“顶部布局指南”的图像,但是如果要将视图固定在设备顶部(例如设备的顶部),请选择“视图”。
micnguyen '16

57

通过在情节提要中突出显示所需的视图,然后Editor > Pin > Top Space to Superview在顶部菜单中进行选择,您应该能够做到这一点。


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


像魅力一样工作
-XCode

4
他们从Xcode 7的编辑器菜单中删除了“ pin”。是否有新的解决方案?
Kyle G

14

TL; DR:您可以通过按Alt键盘上的键来限制页边距。


还可以补充一点,如果您尝试固定的视图不是您想要固定的视图的直接子视图,则建议的方法实际上是无效的。假设视图层次结构看起来像这样,并且您想将图像视图(Parallax Image View在这种情况下)固定到视图控制器的视图(View在这种情况下)。

在此处输入图片说明

为此,您只需Control+ DragParallax Image ViewView。这提供了默认选项,您可以在其中看到Vertical Spacing to Top Layout Guide将其固定Parallax Image View到顶部布局指南。

在此处输入图片说明

您想要将其固定在视图的顶部(边距)。为此,您必须通过按切换到另一组约束Alt

在此处输入图片说明


非常有用的提示。这实际上解决了我的问题。
马查多

它对我有用,但是我不知道如何同时添加多个约束。现在,我必须一个接一个地添加,以花费时间。
阮阮

3

我已经有了很多约束,我只是想改变它们而不是打破它们。如果双击约束进行编辑,然后单击具有“ .Margin”的项目,则可以通过选择该项目来关闭“ Relative to Margin”。

选择相对于保证金


这就是我来这里时要寻找的东西!谢谢
netigger

1

丹的答案有效。我只是想说明一下,如果您在StoryBoard中将视图设置为y <20,并通过图钉面板配置约束,它将把top设置为superview:

在此处输入图片说明

在此处输入图片说明


0

如果视图的高度意外设置为0,则不会出现“垂直空间到顶部布局指南”。但是,将出现“垂直到底部的空间布局指南”,该指南对于大约在2004年Apple内部的人来说一定有意义。


0

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

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

您现在可以出发了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.