如何保持UIIMage的纵横比和侧边距宽度,防止高度超过父视图高度

How to keep UIIMage aspect ratio and side padding width and prevent the height from exceeding the parent view height

我在UIView中间有一个UIIMageView。

我想保持比例

1) 0.36:0.64 用于 UIIMageView

2) 将UIImageView的宽度填充到UIView左右两边稍加填充(例如UIIMageView是UIView宽度的0.9)

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

期望输出iPhone XS Max:

输出有问题iPhone 8 加:

UIImageView的高度大于UIView的高度,不可取

当前限制:

我知道我不能有一个固定的 0.9 宽度。但是我应该在情节提要中用什么替换它呢?我需要图像尽可能填满屏幕但具有相同的纵横比。

你想要 "a little padding" ...我将使用 20-pts 作为这个例子,假设你的意思是你想要 至少每边20点顶部和底部。

您可以使用 >= 值以及将 Priority 设置为小于 1000 的宽度和高度限制来执行此操作。

看看这些约束:

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

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

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

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

用简单的语言来说就是:使 imageView 尽可能宽和高,不违反 边缘填充,并且始终保持纵横比。

这是它在 XS 上的样子:

8:

在 4S 上:

并且,这是它在 8 旋转到横向时的样子: