繁体   English   中英

使UIImageView适合图像内容

[英]Fit UIImageView to image content

是否可以使UIImageView完全适合其内容,以便:

  • 图像的原点与UIImageView对象重合;
  • 图像的框架和UIImageView对象是否重合?

我尝试使用以下代码:

self.imageView.contentMode = UIViewContentModeScaleAspectFit;
[self.imageView setBounds:CGRectMake(self.imageView.bounds.origin.x,
                                     self.imageView.bounds.origin.y,
                                     self.imageView.bounds.origin.x + self.imageView.image.size.width,
                                     self.imageView.bounds.origin.y + self.imageView.image.size.height)];

但是,通过这种方式, UIImageView对象从(0,0)开始,而图像在屏幕上居中。

提前致谢。

我认为您要寻找的是以下方面的东西:

   [self.imageView setFrame: AVMakeRectWithAspectRatioInsideRect(imageSize, self.imageView.frame)];

其中imageSize是您希望保持的宽高比,而在这种情况下, self.imageView.frame是边界矩形。

这是AVFoundation框架的一部分,因此请确保包括:

  #import <AVFoundation/AVFoundation.h>

从您的描述看来,您似乎想要UIViewContentModeScaleAspectFill。

UIViewContentModeScaleAspectFit-将图像放入图像视图内。 如果图像小于图像视图,它将居中。

UIViewContentModeScaleAspectFill-将在图像视图内填充图像。 如果图像小于/大于图像视图,则将缩放图像。

适用于UIViewContentMode的 Apple文档

“是否可以将UIImageView完美地适合其内容?” 是。 您的代码尝试设置UIImageViewbounds 听起来像您想要做的,就是将UIImageViewframe设置为frame的大小。

做了一下,如果你不熟悉的区别谷歌搜索frameUIViewbounds一的UIView ; 这是一个重要的区别。 如果要设置UIImageView的实际大小或位置,请使用其frame ,该frame在包含UIImageViewUIView的坐标空间中运行。 相反,如果您想影响UIImageView包含的视图的坐标空间,则可以使用bounds

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM