2012-01-13 97 views
2

在我的应用程序的设计中,我为来自远程服务器的图像提供了方形空间。然而,偶尔图像是一个横向矩形而不是正方形。调整图像以适合比例

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

回答

5

将您的UIImageViewcontentMode设置为UIViewContentModeScaleAspectFit

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; 

}

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];