ChatGPT解决这个技术问题 Extra ChatGPT

自动布局:将约束添加到超级视图而不是顶部布局指南?

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

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

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

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

我正在使用 xcode 6。

您可以拖放到左侧文档大纲中的正确实体吗? - 此屏幕截图中的场景对象:ptgmedia.pearsoncmg.com/images/chap5_9780672335761/elementLinks/…
我也试过了,结果一样

P
Pavel Gurov

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

https://i.stack.imgur.com/N627y.png


哈利路亚!当他们删除 Editor--> Pin 菜单时,我不知道我要做什么。
不敢相信我以前没有看到。惊人的。
只是给像我一样一无所知的人的注释->除非您要添加约束的视图位于顶部布局指南下方,否则您可能无法进行此更改。我在顶部布局指南上方有一个视图,并且“顶部布局指南”不是下拉菜单中的选项。对于像我这样的非新手来说,这可能是一个“duh”声明:)
这是关于那些小的 Xcode 微妙之处。做这么多。 :)
只是一个让我感到困惑的快速澄清:尽管选中了顶部布局指南的图像,如果您想将视图固定到视图的顶部,例如设备的最顶部,然后选择“视图”。
A
Arbitur

您应该可以通过在情节提要中突出显示您想要的视图,然后在顶部菜单中选择 Editor > Pin > Top Space to Superview 来实现。

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


像魅力一样工作 - XCode 6.3
他们已经从 Xcode 7 的编辑器菜单中删除了“pin”。有什么新的解决方案吗?
Z
Zhivko Bogdanov

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

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

https://i.stack.imgur.com/Er0lO.png

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

https://i.stack.imgur.com/PABJe.png

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

https://i.stack.imgur.com/rJ3Ub.png


非常有用的提示。这实际上解决了我的问题。
它对我有用,但我不知道如何同时添加多个约束。现在,我必须一一添加,需要时间。
c
christophercotton

我已经有一大堆限制,我只是想改变它们而不是打破它们。事实证明,如果您双击要编辑的约束,然后单击具有“.Margin”的项目,您可以通过选择该项目来关闭“Relative to Margin”。

https://i.stack.imgur.com/VHqNW.png


这就是我来这里时一直在寻找的东西!谢谢
o
oren

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

https://i.stack.imgur.com/LgIlM.png

https://i.stack.imgur.com/3khYr.png


G
Gabriel Jensen

如果不小心将视图的高度设置为 0,则不会出现 Vertical Space to Top Layout Guide。但是,将出现垂直空间到底部布局指南,这对于大约 2004 年的 Apple 内部人员来说一定是有意义的。


J
Jas_meet

以上答案都没有对我有用,相反,我必须使用超级视图的顶部而不是顶部布局指南来设置我的子视图的顶部。

首先,用superview垂直设置子视图中心。

然后,将 subview 和 superview 的 Center Y 约束更改为 Top 约束。

你现在可以走了。