Ios 如何使用带有aspectFill和顶部对齐的UIImageView?

Ios 如何使用带有aspectFill和顶部对齐的UIImageView?,ios,swift,uiimageview,Ios,Swift,Uiimageview,如何将UIImageView与aspectFill一起使用并对齐到顶部?自动布局或编程不介意。这是可以做到的,但您谈论的是相当多的编码。让我们从详细描述您的要求开始。 我们将从纵向模式的iPhone6s开始,屏幕大小为667x375点,或者按大小分类的压缩宽度调整正常高度 (请记住,在任何iPad上,您也需要使用滑盖和分屏。) 但现在我们将使用667x375。我们将把imageView添加为375x375的正方形。在纵向模式下沿屏幕顶部 (请记住,使用AutoLayout时,您还可以将其固定,而

如何将
UIImageView
aspectFill
一起使用并对齐到顶部?自动布局或编程不介意。

这是可以做到的,但您谈论的是相当多的编码。让我们从详细描述您的要求开始。

我们将从纵向模式的iPhone6s开始,屏幕大小为667x375点,或者按大小分类的压缩宽度调整正常高度

(请记住,在任何iPad上,您也需要使用滑盖和分屏。)

但现在我们将使用667x375。我们将把imageView添加为375x375的正方形。在纵向模式下沿屏幕顶部

(请记住,使用AutoLayout时,您还可以将其固定,而无需插入一些代码来确定它是在横向还是纵向,否则,如果在其下方有其他视图,则375x375将在横向中收缩。)

现在,我们将讨论如何将“图像”固定到UIImageView的顶部,UIImageView的大小为375x375,内容模式为aspectFill

我们接下来需要找到图像的大小,根据最大尺寸(高度或宽度)以及该尺寸与imageView大小的比较,计算imageView通常如何渲染图像。您想要的关键数字是它将渲染为的高度

例如,480x1020(HxW)图像将如何融入其中?1020的宽度将降低到375,因此高度将为480/(1020375)或176.4705点

始终对这两个维度进行计算-如果您的imageView不是正方形,或者高度不是“有界”维度,您将处于禁用状态

计算出“纵横比填充”高度后,对照imageView的尺寸进行检查,并根据需要调整其高度。

这才是真正的工作。如果您使用的是自动布局,则可以进行高度定位调整,但根据固定其他视图的方式,调整后的布局可能会非常糟糕。如果您使用的是框架和CGRECT,请注意您必须考虑iPad滑出和拆分屏幕等

最后,如果你想让你的应用程序在加载后在该图像视图中加载不同的图像,你必须将高度“重置”回原来的高度,至少在你的计算中是这样。


我的建议是找到一个替代你所要求的方法。例如,在图像视图周围放置一个小边框,让用户知道该视图的真实尺寸。

这是可以做到的,但您谈论的是相当多的编码。让我们从详细描述您的要求开始。

我们将从纵向模式的iPhone6s开始,屏幕大小为667x375点,或者按大小分类的压缩宽度调整正常高度

(请记住,在任何iPad上,您也需要使用滑盖和分屏。)

但现在我们将使用667x375。我们将把imageView添加为375x375的正方形。在纵向模式下沿屏幕顶部

(请记住,使用AutoLayout时,您还可以将其固定,而无需插入一些代码来确定它是在横向还是纵向,否则,如果在其下方有其他视图,则375x375将在横向中收缩。)

现在,我们将讨论如何将“图像”固定到UIImageView的顶部,UIImageView的大小为375x375,内容模式为aspectFill

我们接下来需要找到图像的大小,根据最大尺寸(高度或宽度)以及该尺寸与imageView大小的比较,计算imageView通常如何渲染图像。您想要的关键数字是它将渲染为的高度

例如,480x1020(HxW)图像将如何融入其中?1020的宽度将降低到375,因此高度将为480/(1020375)或176.4705点

始终对这两个维度进行计算-如果您的imageView不是正方形,或者高度不是“有界”维度,您将处于禁用状态

计算出“纵横比填充”高度后,对照imageView的尺寸进行检查,并根据需要调整其高度。

这才是真正的工作。如果您使用的是自动布局,则可以进行高度定位调整,但根据固定其他视图的方式,调整后的布局可能会非常糟糕。如果您使用的是框架和CGRECT,请注意您必须考虑iPad滑出和拆分屏幕等

最后,如果你想让你的应用程序在加载后在该图像视图中加载不同的图像,你必须将高度“重置”回原来的高度,至少在你的计算中是这样。


我的建议是找到一个替代你所要求的方法。例如,在图像视图周围放置一个小边框,让用户知道该视图的真实尺寸。

对齐到什么顶部?您想让
UIImageView
与包含它的视图的顶部对齐,还是想让图像与
UIImageView
的顶部对齐?与UIImageView的顶部对齐您将无法同时执行这两项操作。如果使用纵横比填充,图像将填充到图像视图的大小。如果你想让它在顶部,你就不能填充。对齐到什么的顶部?您想让
UIImageView
与包含它的视图的顶部对齐,还是想让图像与
UIImageView
的顶部对齐?与UIImageView的顶部对齐您将无法同时执行这两项操作。如果使用纵横比填充,图像将填充到图像视图的大小。如果你想让它在上面,你不能用aspec