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

问题描述 投票:0回答:2

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

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

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

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

谢谢

ios uiimageview uiimage afnetworking
2个回答
3
投票

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


1
投票

正如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

© www.soinside.com 2019 - 2024. All rights reserved.