如何保持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
更接近边缘(安全区域边缘)。
我们设置了 centerX
和 centerY
约束,以保持视图居中。
最后一步是将图像视图的 width
和 height
设置为等于视图安全区域的宽度和高度,但是 我们给每个人一个 Priority
of 750
.
用简单的语言来说就是:使 imageView 尽可能宽和高,不违反 边缘填充,并且始终保持纵横比。
这是它在 XS 上的样子:
8:
在 4S 上:
并且,这是它在 8 旋转到横向时的样子:
我在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
更接近边缘(安全区域边缘)。
我们设置了 centerX
和 centerY
约束,以保持视图居中。
最后一步是将图像视图的 width
和 height
设置为等于视图安全区域的宽度和高度,但是 我们给每个人一个 Priority
of 750
.
用简单的语言来说就是:使 imageView 尽可能宽和高,不违反 边缘填充,并且始终保持纵横比。
这是它在 XS 上的样子:
8:
在 4S 上:
并且,这是它在 8 旋转到横向时的样子: