我有一个 UIImageView,其内容模式 Aspect Fit 大小为 220x155。我动态插入不同分辨率的不同图像,但都大于 UIImageView 的大小。当内容模式设置为 Aspect Fit 时,图像将根据比例缩放以适合 UIImageView。
我的问题是,如果 UIImageView 内的图像缩放到 220x100,我希望 UIImageView 的高度也从 155 缩小到 100,以避免元素之间出现空间。
我怎样才能做到这一点?
我编写这个方法是为了在加载图像后获取图像视图的框架。
因此,我的要求与您的情况相同:
1)具有宽高比适合内容模式的图像视图
2)获取图像的精确框架(这样您可以重新定位图像视图)
希望这可以帮助:
- (CGRect) getFrameOfImage:(AsyncImageView *) imgView
{
if(!imgView.loaded)
return CGRectZero;
CGSize imgSize = imgView.image.size;
CGSize frameSize = imgView.frame.size;
CGRect resultFrame;
if(imgSize.width < frameSize.width && imgSize.height < frameSize.height)
{
resultFrame.size = imgSize;
}
else
{
float widthRatio = imgSize.width / frameSize.width;
float heightRatio = imgSize.height / frameSize.height;
float maxRatio = MAX (widthRatio , heightRatio);
NSLog(@"widthRatio = %.2f , heightRatio = %.2f , maxRatio = %.2f" , widthRatio , heightRatio , maxRatio);
resultFrame.size = CGSizeMake(imgSize.width / maxRatio, imgSize.height / maxRatio);
}
resultFrame.origin = CGPointMake(imgView.center.x - resultFrame.size.width/2 , imgView.center.y - resultFrame.size.height/2);
return resultFrame;
}
我在这里使用AsyncImageView
但它也同样适用于UIImageView
。要记住的重要一点是在加载图像后调用此方法。
Cheers!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)