自动布局何时可以推断宽度和水平位置?
When can auto layout infer width and horizontal position?
我正在尝试使用自动布局来布置以下简单的 UI:
到目前为止,我设置了 5 个约束条件:
- 文本字段的左边缘被限制在左对齐参考线上
- 文本字段的上边缘包含在顶部对齐参考线中
- 标签的右边缘被约束到右对齐参考线
- 标签的上边缘被约束到顶部对齐参考线
- 文本字段的右边缘被限制为距离标签的前边缘 20 点
基于这些限制,我认为教科书的宽度将由标签的大小决定,并且隐含两者的水平布局。这确实是当我更改按钮大小时这些约束的行为方式,但我仍然在 xcode:
中收到以下警告
我的问题是为什么?宽度和水平位置可以由提供的信息决定,提供额外的信息(比如固定宽度)只会打乱界面的灵活性。
- 无法根据您应用的约束计算井宽。
- textField 和 label 都根据内容增长和收缩。
如果在运行时我添加更多文本或增加两个字段的文本(内容),将会发生什么。那么就会有歧义,哪些字段要填满,哪些要trim.
所以一件事需要根据另一件事的宽度来计算。
- 您可以添加一个额外的宽度约束以添加 Activity。
- 我的额外宽度限制将小于或等于您指定的宽度。而且它的优先级会大于它的领先。
或者你会想玩内容拥抱优先级。随着内容拥抱优先级的变化,可以使标签不增长成为可能。
Cocoa Autolayout: content hugging vs content compression resistance priority
如果您不想添加额外宽度约束然后增加 的水平拥抱将 Activity 添加到 251(大于文本字段拥抱)将解决不明确的约束问题。
我正在尝试使用自动布局来布置以下简单的 UI:
到目前为止,我设置了 5 个约束条件:
- 文本字段的左边缘被限制在左对齐参考线上
- 文本字段的上边缘包含在顶部对齐参考线中
- 标签的右边缘被约束到右对齐参考线
- 标签的上边缘被约束到顶部对齐参考线
- 文本字段的右边缘被限制为距离标签的前边缘 20 点
基于这些限制,我认为教科书的宽度将由标签的大小决定,并且隐含两者的水平布局。这确实是当我更改按钮大小时这些约束的行为方式,但我仍然在 xcode:
中收到以下警告我的问题是为什么?宽度和水平位置可以由提供的信息决定,提供额外的信息(比如固定宽度)只会打乱界面的灵活性。
- 无法根据您应用的约束计算井宽。
- textField 和 label 都根据内容增长和收缩。
如果在运行时我添加更多文本或增加两个字段的文本(内容),将会发生什么。那么就会有歧义,哪些字段要填满,哪些要trim.
所以一件事需要根据另一件事的宽度来计算。
- 您可以添加一个额外的宽度约束以添加 Activity。
- 我的额外宽度限制将小于或等于您指定的宽度。而且它的优先级会大于它的领先。
或者你会想玩内容拥抱优先级。随着内容拥抱优先级的变化,可以使标签不增长成为可能。 Cocoa Autolayout: content hugging vs content compression resistance priority
如果您不想添加额外宽度约束然后增加 的水平拥抱将 Activity 添加到 251(大于文本字段拥抱)将解决不明确的约束问题。