如何使方形视图调整其超视图使用自动布局
在我的具体情况下,我已经在视图控制器中查看了我添加了以下约束:
- 将前导,尾部,顶部和底部边缘设置为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成功了。
-
我所做的是首先为X中心添加约束。(即使在我的屏幕截图中,忽略中心Y也是如此,无论因为步骤2,它都会中断。)
-
然后我添加了一个顶部和底部约束
-
最后我添加了一个宽高比约束
当我为此设置animation时,方框正确缩放为方块。 如果你想我可以上传testing项目。