我的UIImageView内容模式Aspect Fit尺寸为220x155.我正在以不同的分辨率动态插入不同的图像,但都大于UIImageView的大小.当内容模式设置为Aspect Fit时,图像将根据比例进行缩放以适合UIImageView.
我的问题是,如果例如UIImageView中的图像缩放到220x100,我希望UIImageView也从155到100的高度缩小,以避免我的元素之间的空间.
我怎样才能做到这一点?
Mic*_*gar 28
如果我找对你,那将是这样的:通过以下方式获取图像大小:
UIImage * img = [UIImage imageNamed:@"someImage.png"];
CGSize imgSize = img.size;
Run Code Online (Sandbox Code Playgroud)
计算宽度的比例
float ratio=yourImageView.frame.size.width/imgSize.width;
Run Code Online (Sandbox Code Playgroud)
检查缩放高度(使用相同比例保持方面)
float scaledHeight=imgSize.height*ratio;
if(scaledHeight < yourImageView.frame.size.height)
{
//update height of your imageView frame with scaledHeight
}
Run Code Online (Sandbox Code Playgroud)
Ste*_*nik 20
根据Michael的回答,这是一个完整的方法
+ (CGSize)makeSize:(CGSize)originalSize fitInSize:(CGSize)boxSize
{
float widthScale = 0;
float heightScale = 0;
widthScale = boxSize.width/originalSize.width;
heightScale = boxSize.height/originalSize.height;
float scale = MIN(widthScale, heightScale);
CGSize newSize = CGSizeMake(originalSize.width * scale, originalSize.height * scale);
return newSize;
}
Run Code Online (Sandbox Code Playgroud)