我如何使用UIImageView的aspectFill和alignment到顶部?

我怎样才能使用UIImageViewaspectFill和alignment顶部? 自动布局或以编程方式不介意。

这是可以做到的,但是你正在谈论相当多的编码。 我们首先详细描述你所要求的东西。

我们将以纵向模式的iPhone6s开始,屏幕尺寸为667×375点,或者是宽度为压缩宽度的常规高度。

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

但是现在我们要用667×375。 在那里,我们将添加我们的imageView作为375×375的平方尺寸。 在纵向模式下沿着屏幕的顶部。

(请记住,在使用AutoLayout的情况下,您也可以固定它,而不需要添加一些代码来确定它是横向还是纵向的,否则,375×375会在横向缩小,如果您有其他视图的话。

所以,现在,剥离到最小(现在),我们正在讨论如何将“图像”钉在375×375大小的UIImageView的顶部,并使用aspectFill的contentMode。

我们需要根据最大尺寸(高度或宽度)以及该尺寸如何与imageView的大小进行比较来计算imageView的大小,然后计算imageView的正常渲染方式。 你想要的关键数字是它将呈现的高度

例如,一个480×1020(HxW)图像如何适合它? 1020宽度将被降至375,所以高度将是480 /(1020375)或176.4705点。

总是对这两个维度进行math运算 – 如果你的imageView不是方形的,或者如果高度不是“有界的”维度,你将会closures。

一旦计算了“Aspect Filled”高度将会是什么,请根据imageView的尺寸检查它,并根据需要调整高度。

这里是真正的工作进来的地方。如果你使用AutoLayout,你可以做一个heightAnchor调整,但是取决于你如何固定这些其他的视图,在你做之后,事情可能会非常糟糕。 如果您使用的是框架和CGRects,请注意您必须考虑iPad滑出和分屏等。

最后,如果您希望应用程序在加载后在图像视图中加载不同的图像,则至less在计算中必须将高度“重置”回原来的大小。

我的build议是find你所要求的select。 例如,在图像视图周围放置一个小边框,以便让用户知道该视图的真实尺寸。