容器视图的自动布局简单 X Y 约束不起作用

Auto layout Simple X Y constraints for Container View not working

提问人:Summer 提问时间:7/10/2021 最后编辑:Summer 更新时间:7/10/2021 访问量:145

问:

我正在遵循一个简单的教程,尝试添加 X 和 Y 约束,但遇到了问题。

教程如下:https://www.youtube.com/watch?v=emojd8GFB0o

在 11:07 左右,他添加了一个 X 约束和一个 Y 约束。

我完全按照他的做法做了,除了在容器视图上尝试这个。然而,我仍然收到错误,说它需要 X 和 Y 约束。它在按钮上工作得很好。

请帮忙!我做错了什么?如何让它在容器视图上工作?

enter image description here enter image description here enter image description here

Xcode 自动布局

评论


答:

1赞 EmilioPelaez 7/10/2021 #1

按钮有一种叫做“内在内容大小”的东西,这意味着它们可以告诉布局系统它们的首选大小是什么,这是根据它们的内容(文本+图像)计算得出的。

您的空容器视图没有固有的内容大小,它无法知道自己有多大,到目前为止,它只知道它必须在 X 和 Y 中居中。

但这还不足以知道它的 X 和 Y 位置(位置是左上角的坐标),因为例如,如果宽度是父项的全宽,则 X 将为 0,但如果宽度为 0,则 X 将是父项宽度的一半。

您需要为视图指定宽度和高度,无论是通过将其大小链接到父级,还是使用常量来执行此操作,这取决于您。

0赞 Tarun Tyagi 7/10/2021 #2

A 知道它会有多大。尝试向按钮添加短/长标题值,您将看到它将相应地调整自身大小。因此,当你向按钮添加&约束时(相对于它的超级视图),Autolayout可以完成其余的数学运算。UIButtonsize(width,height)centerXcenterY

示例 - 按钮需要水平和垂直位于屏幕中央。60x40


A不知道它会有多大。在这种情况下,指定 & 不足以让 Autolayout 完成剩下的工作,它无法猜测 的大小,因此它无法计算将视图放置在屏幕上的位置(不知道大小)。UIViewsize(width,height)centerXcenterYUIView

你可以在视图中添加&约束,你会看到Autolayout将不再抱怨这一点。widthheight

评论

0赞 Summer 7/10/2021
谢谢!什么是短/长标题价值?
0赞 Tarun Tyagi 7/10/2021
我指的是 的标题值 - “短”或“长标题按钮”等。一个示例,用于查看按钮如何适应这些标题值,并根据其标题相应地调整自身大小。UIButton