Autolayout - 两个对象之间的关系,这是“主导”?

时间:2017-10-03 22:46:50

标签: ios xcode user-interface autolayout constraints

假设屏幕上有两个对象。我将其中一个限制在我想要的位置和大小的位置。

另一个对象的约束是:

  • 将中心X对齐到对象1
  • 将中心Y对齐到对象1
  • 对象1的等宽度
  • 对象1的平等高度

那么......为什么对象1会改变以满足第二个对象的高度/宽度而不是相反 - 从而也可以将定位设置为打击?我问第二个对象是对象1的大小和位置有这4个约束,我不是吗?

感谢您的解释!

编辑:第二个对象是一个UIImageView,其中“Aspect Fit”设置为内容模式。对象1是UILabel。

1 个答案:

答案 0 :(得分:1)

所有视图都需要从某处获得高度和宽度。但是你没有为任何一个视图提供高度或宽度。

如果您不提供高度/宽度限制,图片视图和标签都会从intrinsicContentSize获得高度和宽度。

intrinsicContentSize被转换为约束,其优先级由每个轴的Content Hugging PriorityContent Compression Resistance Priority确定。

如果您查看两个视图的这些值(在故事板中的大小检查器中,或者如果您在代码中创建它们,则在代码中),您将看到这是一个僵局或图像视图有更高的优先级和胜利。无论哪种方式,您都需要通过提高或降低其中一个视图的优先级来解决想要解决的问题。