2

我有一个图像(从我们的服务器获取)我想放入 UIImageView。图像为 373x500。UIImageView 是 443x290 并且视图正在拉伸它。

UIImageView *myImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 
                                                                         0, 
                                                                         500, 
                                                                         300)];

myImageView.image = [UIImage imageWithData:photoData];
myImageView.backgroundColor = [UIColor viewBackgroundColor];
myImageView.contentMode = UIViewContentModeScaleAspectFit;

NSLog(@"myImageView.image.size: %@", NSStringFromCGSize(myImageView.image.size));
NSLog(@"myImageView.frame.size: %@", NSStringFromCGSize(myImageView.frame.size));

[wrapperView addSubview:myImageView];

日志内容:

2012-05-09 11:32:52.621[89145:1a303] myImageView.image.size: {373, 500}
2012-05-09 11:32:52.622[89145:1a303] myImageView.frame.size: {443, 290}

好像:

在此处输入图像描述

“UIViewContentModeScaleAspectFit”不应该告诉它保持比例而不拉伸图像吗?

4

3 回答 3

1

您也应该设置clipsToBounds = YES视图。

于 2012-05-09T16:42:55.700 回答
0

UIViewContentModeScaleAspectFit缩放图像(顾名思义)以适应视图的纵横比。如果您不希望它缩放图像使用UIViewContentModeCenter,它只会将图像以其原始大小放置在视图的中心。

于 2013-01-25T00:10:41.863 回答
0

为我解决这个问题的是在设置框架之前设置内容模式......

UIImageView *imageView = [UIImageView new];
imageView.myImage;
imageView.contentMode = UIViewContentModeScaleAspectFit;
imageView.frame = CGRectMake(...);
[self.view addSubiew:imageView];
于 2014-11-14T21:04:18.763 回答