使UIImageView适合图像内容

时间:2013-09-12 14:59:28

标签: ios objective-c uiimageview

是否可以将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)开始,而图像则以屏幕为中心。

提前致谢。

3 个答案:

答案 0 :(得分:5)

我认为你正在寻找的东西是:

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

其中 imageSize 是您希望维护的宽高比,在本例中 self.imageView.frame 是边界矩形。

这是AVFoundation Framework的一部分,因此请务必包括:

  #import <AVFoundation/AVFoundation.h>

答案 1 :(得分:1)

根据您的描述,您似乎想要UIViewContentModeScaleAspectFill。

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

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

UIViewContentMode

的Apple文档

答案 2 :(得分:0)

“是否有可能将UIImageView完美地融入其内容?”是。您的代码尝试设置bounds的{​​{1}}。 发声的内容就是将UIImageView的{​​{1}}设置为图像的大小。

如果您不熟悉frame UIImageViewframe UIView之间的差异,请进行一些谷歌搜索;这是一个重要的区别。如果您要设置bounds的实际尺寸或位置,请使用UIView,该UIImageView在包含frame的{​​{1}}的坐标空间中运行。如果您希望影响UIView所包含的观看次数的坐标空间,则可以使用UIImageView