我们正在从Internet上下载图像,并将它们分配给具有aspectFit的UIImageView对象作为它的contentMode,类似于[myImageView setImageWithURL:aURL]。
但是,纵横拟合会调整图像大小并使其在视图边界内居中。换句话说,当图像的宽度超过它的高度时,UIImageView的底部边框和图像本身之间会有一个空间。
现在,我想在图像下方添加一个标签,其间没有任何类型的空间。怎么能实现这一目标?我的意思是,我们可以预先调整图像的大小并在之后设置ImageView框架,但是,由于图像的源是URL,因此需要首先下载图像(一堆已经由UIImageView类别实现的代码)。
有没有办法告诉UIImageView" wrap"本身围绕resizedImage,还是有办法通过约束来实现这种效果?
由于
答案 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