如何根据UIImaveView的图像调整大小?

时间:2019-03-26 10:56:52

标签: swift uiimageview

我想让UIImageView尽可能地装满一个容器,但其中的图片应保持其长宽比,并且该容器应适合其中的图片尺寸。

这是当它无法正常工作时的状态的图片:

https://imgur.com/a/S9WSHmc

我已经解决了这个问题,但是只有在第一次加载视图时,当我更改imageView的图像时,它才会变得越来越小。

我通过此扩展程序解决了该问题:

https://www.hackingwithswift.com/example-code/uikit/how-to-find-an-aspect-fit-images-size-inside-an-image-view

因此,在获取UIImage时,我调用layout方法对UIView进行布局,然后在UIImageView中设置图像。接下来,在父UIView的绘制方法中,我计算contentClippingRect的{​​{1}},然后将UIImageView的约束条件设置为UIImageView并再次进行布局。

当imageView内没有图像时,“我的布局”方法将contentClippingRect的约束重置为整个容器的约束。

但是,正如我所说,当我更改图片时,它将不起作用,并且在更改图片时存在约束问题。

这是我尝试过的:

UIImageView

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您还可以根据情节提要来调整外观。转到该imageView的属性检查器,您将从那里找到内容模式。这是一个示例enter image description here

您也可以通过编程方式执行此操作。

快速

yourImageView.contentMode = .scaleAspectFill // or you can use .scaleToFill

对于目标c

yourimageView.contentMode = UIViewContentModeScaleAspectFit;

以下是一些可以编程使用的contentModes。

UIViewContentModeScaleToFill,
UIViewContentModeScaleAspectFit,     
UIViewContentModeScaleAspectFill,   
UIViewContentModeRedraw,             
UIViewContentModeCenter,              
UIViewContentModeTop,
UIViewContentModeBottom,
UIViewContentModeLeft,
UIViewContentModeRight,
UIViewContentModeTopLeft,
UIViewContentModeTopRight,
UIViewContentModeBottomLeft,
UIViewContentModeBottomRight,