如何保持UIIMage的宽高比和侧面填充宽度以及如何防止高度超过父视图高度

时间:2019-02-25 10:12:00

标签: autolayout

我在UIView的中间有一个UIIMageView。

我想保持比率

1)UIIMageView为0.36:0.64

2)将UIImageView的宽度填充到UIView的左右两侧(例如,UIIMageView为UIView宽度的0.9)

它在比例几乎等于0.36:0.64的较大设备(例如iPhone XS Max,iPhone 8 Plus)上运行良好,但在iPhone 4s上却不行。

所需的输出iPhone XS Max: enter image description here

问题输出iPhone 8 Plus:

enter image description here

UIImageView的高度大于UIView的高度,这是不理想的

当前限制:

enter image description here

我知道我不能有固定的0.9宽度。但是我应该用情节提要替换它吗?我需要图像尽可能多地填充屏幕,但是具有相同的宽高比。

1 个答案:

答案 0 :(得分:1)

您要“稍加填充” ...在此示例中,我将使用20-pts,并假设您的意思是至少要 每边顶部和底部20点。

您可以使用>=值以及将Priority设置为小于1000的宽度和高度约束来完成此操作。

看看这些约束:

enter image description here

我们已将纵横比设置为36:64(与0.36:0.64相同,但更有意义)。

我们将顶部,底部,前导和尾部全部设置为>= 20 ...,以防止任何边比20-pts靠近边缘(安全区域边缘)。

我们设置了centerXcenterY约束,以保持视图居中。

最后一步是将图像视图的widthheight设置为等于视图安全区域的宽度和高度, 但是 我们给每个人Priority中的750

用简单的语言说:使imageView尽可能宽和高, 不违反 边缘填充,并且 始终< / em> 。保持宽高比。

这是在XS上的外观:

enter image description here

在8:

enter image description here

和4S:

enter image description here

,这是在旋转为“横向”方向的8上它的外观:

enter image description here