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

时间:2015-11-01 15:46:55

标签: ios autolayout interface-builder

我正在尝试使用自动布局布局以下简单的UI: enter image description here

到目前为止,我已经设置了5个约束:

  • 文本字段的左边缘被约束到左对齐指南
  • 文本字段的上边缘包含在顶部对齐指南
  • 标签的右边缘受限于右对齐指南
  • 标签的上边缘限制在顶部对齐指南
  • 文本字段的右边缘被限制为距标签前沿的20个点

基于这些限制,我认为教科书的宽度将由标签的大小决定,两者的水平布局都是隐含的。这确实是当我改变按钮大小时这些约束的行为,但我仍然在xcode中收到以下警告:

enter image description here

我的问题是为什么?宽度和水平位置可以通过提供的信息来确定,并且提供附加信息(如固定宽度)只会影响界面的灵活性。

1 个答案:

答案 0 :(得分:2)

  • 无法根据您应用的约束计算宽度。
  • textField和label都会根据内容增长和缩小。
  • 会发生什么如果在运行时我添加了更多文本或增加了两个字段的文本(内容)。然后,关于哪个字段填满和修剪哪个字段会有歧义。

  • 因此,有一件事需要根据其他宽度来计算。

  • 您可以为添加活动添加一个额外宽度约束。
  • 我的额外宽度约束将小于或等于您指定的宽度。它的优先级将高于其领先地位。

enter image description here

或者你想玩内容拥抱优先级。通过改变内容拥抱优先级,可以使标签不会增长。 Cocoa Autolayout: content hugging vs content compression resistance priority

如果您不想添加额外宽度约束,那么将添加活动的水平拥抱增加到251(大于文本字段拥抱)将解决模糊约束问题。

enter image description here