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

时间:2016-05-06 18:56:28

标签: ios uiimageview uiimage afnetworking

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

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

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

有没有办法告诉UIImageView" wrap"本身围绕resizedImage,还是有办法通过约束来实现这种效果?

由于

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分: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

相关问题