自动布局何时可以推断宽度和水平位置?

When can auto layout infer width and horizontal position?

我正在尝试使用自动布局来布置以下简单的 UI:

到目前为止,我设置了 5 个约束条件:

基于这些限制,我认为教科书的宽度将由标签的大小决定,并且隐含两者的水平布局。这确实是当我更改按钮大小时这些约束的行为方式,但我仍然在 xcode:

中收到以下警告

我的问题是为什么?宽度和水平位置可以由提供的信息决定,提供额外的信息(比如固定宽度)只会打乱界面的灵活性。

  • 无法根据您应用的约束计算井宽。
  • textField 和 label 都根据内容增长和收缩。
  • 如果在运行时我添加更多文本或增加两个字段的文本(内容),将会发生什么。那么就会有歧义,哪些字段要填满,哪些要trim.

  • 所以一件事需要根据另一件事的宽度来计算。

  • 您可以添加一个额外的宽度约束以添加 Activity。
  • 我的额外宽度限制将小于或等于您指定的宽度。而且它的优先级会大于它的领先。

或者你会想玩内容拥抱优先级。随着内容拥抱优先级的变化,可以使标签不增长成为可能。 Cocoa Autolayout: content hugging vs content compression resistance priority

如果您不想添加额外宽度约束然后增加 的水平拥抱将 Activity 添加到 251(大于文本字段拥抱)将解决不明确的约束问题。