为什么使用自动布局无法正确定位此对象?

时间:2015-12-22 15:30:48

标签: ios autolayout

我在我的基本布局上放置了一个图像视图(内容大小:宽高比)。我创建了尾部,前导和底部约束,并将它们的constant设置为0。

enter image description here

当图像小于视图时,不会发生这种情况:

enter image description here

虽然,iPhone上的图像没有正确定位 - 它几乎居中 - 但它在iPad上。也许它的内在尺寸太大了?为什么会这样?

2 个答案:

答案 0 :(得分:1)

由于您尚未在图像视图上设置顶部,宽高比或高度限制,因此iOS会回退到内在尺寸(图像的实际尺寸)仅适用于高度 (宽度由前导/尾随约束设置)。如果图像比屏幕宽,则会产生与原始图像一样高的图像视图,但设置为屏幕宽度。

然后,当您将内容模式设置为Aspect Fit时,iOS会将已调整大小的图像放在图像视图中,并在其周围留下大量空白区域。

解决此问题的一个选项是在图像视图上添加纵横比约束,匹配其中图像的纵横比。这将导致图像视图的高度正确。

答案 1 :(得分:0)

我相信beyowulf是正确的。您应该尝试更改imageview的背景颜色。如果更改imageview背景颜色,您将意识到imageview始终遵循您的自动布局约束。

现在为什么不成像? 这是因为你问它不要:)方面适合将尝试调整图像大小仍然保持纵横比:)当图像的大小太大,即大于imageview框架的大小,图像覆盖imageview的整个框架和也保持纵横比。意味着如果宽度大于屏幕宽度,图像将覆盖图像视图框架宽度并为该宽度采用相应的高度。

这就是为什么在第一种情况下你的图像覆盖完整的imageview框架,而在第二种情况下图像尺寸很小只覆盖了所需的空间:)

另一方面,如果您希望图像覆盖图像视图帧,则始终可以根据您的要求缩小到填充或填充方位。

快乐编码:)