如何使方形视图调整其超视图使用自动布局

在我的具体情况下,我已经在视图控制器中查看了我添加了以下约束:

  • 将前导,尾部,顶部和底部边缘设置为0
  • 将乘法器设置为底部边缘为2:1

现在视图位于视图控制器的上半部分。

在这里面我添加一个方形的图像视图,为此我添加了以下约束:

  • Ctrl从图像视图拖到超视图,并添加相等的高度和宽度。
  • 改变宽度和高度的倍数,直到我有一个完美的正方形。
  • 增加了约束条件,以垂直和水平居中

我的约束似乎是完美的,但是在模拟器中运行时,我不能得到一个完美的正方形。 除此之外,在不同的模拟器屏幕上运行时,图像视图不会resize。

这是我的设置:

  • 自动布局和大小类别已启用
  • 我使用故事板的推断大小
  • 自适应布局设置为任何宽度和高度
  • 我试图运行这个4s,5,6和6+模拟器。

我看着其他的stackoverflowpost,但似乎没有工作。

有没有一些基本的步骤来做到这一点?

在这里输入图像说明

编辑:

设置> = 10约束后:

在这里输入图像说明

编辑3:我添加了顶部,底部,领先,尾随限制2次,1低于或等于(优先级1000),另一个大于或等于(优先级800)与常数值90.我不知道为什么底部它试图从主视图拉伸到90磅,而不是容器视图(绿色)。

在这里输入图像说明

你有一个观点,需要扩大,以填补其容器,同时保持其纵横比。 这是自动布局的常见模式。

诀窍是对前导/尾随/顶部/底部使用两个约束:

  • =10低优先级

  • >=10 ,按要求优先。

把它放在一起,你有:

  • 长宽比1:1

  • 中心X / Y在Superview

  • 领导/落后/顶部/底部到超级视angular= 10(优先级为750)

  • 领导/尾随/顶部/底部到超级视图> = 10(优先级为1000)

在UIImageView中还有几个要考虑的事情:

  • UIImageView将根据所显示的图像具有固有的内容大小,因此您需要确保其内容拥抱优先级低于用于=10约束的750优先级。

  • UIImageView.contentMode确定底层图像相对于UIImageView大小的大小。 默认情况下,它被设置为UIViewContentModeScaleToFill

 container view ---------------------------------------------- | | | | >=10 | | imageView | | | ---------------------------- | | | | | | | | | | | | | | | | | | | | | | | | | | |- >=10 -|---------- 1:1 -----------|- >=10 -| | | | | | | | | | | | | | | | | | | | | | ---------------------------- | | | | | >=10 | | | | ---------------------------------------------- 

**如果你想要的话,你可以指定imageView的高度或宽度以及较低的优先级约束。

我使用这个configuration成功了。

  1. 我所做的是首先为X中心添加约束。(即使在我的屏幕截图中,忽略中心Y也是如此,无论因为步骤2,它都会中断。)

  2. 然后我添加了一个顶部和底部约束

  3. 最后我添加了一个宽高比约束

当我为此设置animation时,方框正确缩放为方块。 如果你想我可以上传testing项目。

在这里输入图像说明