调整UIImageView的大小以包装“适合方面”的图像

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了调整UIImageView的大小以包装“适合方面”的图像相关的知识,希望对你有一定的参考价值。

我们正在从Internet下载图像并将它们分配给具有aspectFit的UIImageView对象,因为它是contentMode,类似于[myImageView setImageWithURL:aURL]。

但是,纵横拟合会调整图像大小并使其在视图边界内居中。换句话说,当图像的宽度超过它的高度时,UIImageView的下边框和图像本身之间会有一个空格。

现在,我想在图像下方添加一个标签,中间没有任何类型的空间。怎么能实现这一目标?我的意思是,我们可以预先调整图像的大小并在之后设置ImageView框架,但是,由于图像的源是一个URL,因此需要首先下载图像(一堆已经由UIImageView类别实现的代码)。

有没有办法告诉UIImageView在resizedImage周围“包裹”自己,还是有办法通过约束来实现这种效果?

谢谢

答案

约束应该处理这个问题。确保您的UIImageView仅在左侧和右侧有限制(我猜也是顶部)并且没有高度限制。对于你的UILabel,它应该有一个从UIImageView的顶部到底部的约束(以及你想要的任何水平约束)。

另一答案

正如Cbiggin所说,你可以使用AutoLayout,但这是实现这一目标的另一种方法

显示加载并在异步线程中运行此代码:

NSData *imageData = [NSData dataWithContentsOfURL:imageUrl];

下载图像数据后,使用此代码获取图像的宽度和高度

UIImage *image = [UIImage imageWithData:imageData];
NSLog(@'image height: %f',image.size.height);
NSLog(@'image width: %f',image.size.width); 

并且你可以计算你的UIImageView的高度,例如,如果你的UIImageView的宽度是320而你的图像大小是1024x768,你的UIImageView高度将是240

float imageViewHeight = imageView.frame.size.width/image.size.width * image.size.height

你可以使用imageViewHeight

以上是关于调整UIImageView的大小以包装“适合方面”的图像的主要内容,如果未能解决你的问题,请参考以下文章

自动调整 UIImageView 的大小以适合底层图像

无法让 UIImageView 调整大小以适应屏幕

以 Right Detail 样式 UITableViewCell 调整 UIImageView 的大小

如何调整 uiimageview 的大小以仅适合 aspectfill 中的图像?

UIImageView 子类需要处理调整大小

调整 uiview 的大小以及 uiimageview 的旋转