调整 UIImageView 的大小以包裹 "aspect fitted" 图像
Resize UIImageView to wrap "aspect fitted" image
我们正在从 Internet 下载图像并将它们分配给具有 aspectFit 的 UIImageView 对象,因为它是 contentMode,类似于 [myImageView setImageWithURL:aURL]。
但是,纵横比调整会调整图像大小并使其在视图边界内居中。换句话说,当图像的宽度大于它的高度时,UIImageView 的底部边框和图像本身之间将有一个 space。
现在,我想在图像下方添加一个标签,中间没有任何类型的 space。如何实现?我的意思是,我们可以事先调整图像大小,然后设置 ImageView 框架,但是,由于图像的来源是 URL,这需要先下载图像(一堆代码已经由 UIImageView 类别实现)。
有没有办法让 UIImageView 在 resizedImage 周围 "wrap" 自己,或者有没有办法通过约束来实现这个效果?
谢谢
约束应该处理这个问题。确保您的 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
我们正在从 Internet 下载图像并将它们分配给具有 aspectFit 的 UIImageView 对象,因为它是 contentMode,类似于 [myImageView setImageWithURL:aURL]。
但是,纵横比调整会调整图像大小并使其在视图边界内居中。换句话说,当图像的宽度大于它的高度时,UIImageView 的底部边框和图像本身之间将有一个 space。
现在,我想在图像下方添加一个标签,中间没有任何类型的 space。如何实现?我的意思是,我们可以事先调整图像大小,然后设置 ImageView 框架,但是,由于图像的来源是 URL,这需要先下载图像(一堆代码已经由 UIImageView 类别实现)。
有没有办法让 UIImageView 在 resizedImage 周围 "wrap" 自己,或者有没有办法通过约束来实现这个效果?
谢谢
约束应该处理这个问题。确保您的 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