我如何将UIImageView
与aspectFill
一起使用并与顶部对齐?自动布局或以编程方式不介意。
答案 0 :(得分:0)
可以这样做,但你在谈论相当多的编码。让我们首先详细描述您的要求。
我们将从纵向模式的iPhone6s开始,屏幕尺寸为667x375点,或按尺寸类别的压缩宽度计算常规高度。
(请注意,在任何iPad上,您还需要使用幻灯片和分屏。)
但是现在我们将使用667x375。我们将imageView添加为375x375的正方形尺寸。在纵向模式下沿着屏幕顶部。
(请记住,使用AutoLayout,您也可以将其固定,并且不会放入一些代码来确定它是否为横向或纵向,否则,如果您在下方有其他视图,那么375x375将在横向缩小它)。
所以现在,剥离到最低限度(现在),我们正在谈论如何将“图像”固定到尺寸为375x375且内容模式为aspectFill的UIImageView的顶部。
我们需要根据最大尺寸(高度或宽度)以及该尺寸与imageView大小的比较来查找下一个图像的大小,计算imageView通常如何渲染它。你想要的关键人物是它将它呈现为
的高度例如,480x1020(HxW)图像如何适应它? 1020宽度将降至375,因此高度将为480 /(1020375)或176.4705点。
始终对两个维度进行数学运算 - 如果您的imageView不是正方形,或者如果高度不是“有界”维度,那么您将会关闭。
计算出“Aspect Filled”高度后,请根据imageView的尺寸进行检查,并根据需要调整高度。
这是实际工作的地方。如果您使用的是AutoLayout,您可以进行heightAnchor调整,但是根据您固定其他视图的方式,事情可能会非常糟糕。如果你正在使用框架和CGRects,请注意你必须考虑iPad滑出和分屏等。
最后,如果您希望应用在加载后在该imageView中加载不同的图像,则必须将高度“重置”回原来的高度,至少在计算中是这样。强>
我的建议是找到你所要求的替代品。例如,在图像视图周围放置一个小边框,让用户知道该视图的真实尺寸。