调整图像大小以适应比例

时间:2012-01-13 16:57:10

标签: iphone ios uikit

在我的应用程序的设计中,我有一个方形空间,用于来自远程服务器的图像。但是,偶尔图像是横向矩形而不是正方形。

我不想裁剪图像,而是将其缩小到足以适合方形约束,然后用一些背景颜色填充剩余空间,可能是白色。

3 个答案:

答案 0 :(得分:5)

contentMode的{​​{1}}设置为UIImageView

答案 1 :(得分:1)

我不知道这是否有帮助,但我使用它来调整视图的大小以匹配图像。它采用提供的矩形,并修剪它以匹配图像。然后可以将返回的CGRect应用于视图。我使用了这个,所以我可以为图像添加一个阴影(如果视图与图像不完全匹配则看起来不对)。

- (CGRect) resizeCGRect:(CGRect)rect toImage:(UIImage *)image{
CGSize size = rect.size;
CGSize iSize = image.size;
if (iSize.width > iSize.height){
    if (iSize.width / iSize.height > size.width / size.height)
        size.height = size.width * (iSize.height / iSize.width);                    
    else
        size.width = size.height * (iSize.width / iSize.height);
} else {
    if (iSize.height / iSize.width > size.height / size.width) 
        size.width = size.height * (iSize.width / iSize.height);
    else 
        size.height = size.width * (iSize.height / iSize.width);
}
rect.size = size;
return rect;

}

答案 2 :(得分:1)

使用所需颜色的背景颜色创建UIImageView。从服务器创建图像,在图像视图中设置图像,然后设置contentMode = UIViewContentModeScaleAspectFit

UIImageView *backgroundColorWhite = [[UIImageView alloc] initWithFrame:someObject.frame];
backgroundColorWhite.backgroundColor = [UIColor whiteColor];
UIImage *serverImage = [UIImage imageWithData:serverData];
backgroundColorWhite.contentMode = UIViewContentModeScaleAspectFit;
[backgroundColorWhite setImage:serverImage];