为什么Imageview总是拉伸显示图像拉伸iOS?

时间:2017-01-03 09:37:20

标签: ios objective-c imageview

我使用的是imageView,它包含不同的图像,但有些图像会被拉伸。如何在不拉伸的情况下显示图像?我已将contentMode设置为纵横比较。但是,图像的大小不在imageView中,并且大小不同。我想在不拉伸的情况下将图像显示为相同尺寸。

   imageview1 = [[UIImageView alloc]initWithFrame:CGRectMake(30, 10, 190, 190)];
   imageview1.contentMode = UIViewContentModeScaleAspectFit;
   imageview1.clipsToBounds = YES;

2 个答案:

答案 0 :(得分:4)

请在设置框架之前尝试设置内容模式,如下所示

 imageview1.contentMode = UIViewContentModeScaleAspectFit;
 imageview1 = [[UIImageView alloc]initWithFrame:CGRectMake(30, 10, 190, 190)];      
 imageview1.clipsToBounds = YES;

答案 1 :(得分:2)

如果要显示每个图像而不拉伸且尺寸相同,则将contentMode实例的UIImageView's属性设置为UIViewContentModeScaleAspectFill。例如 -

imageview1 = [[UIImageView alloc]initWithFrame:CGRectMake(30, 10, 190, 190)];
imageview1.contentMode = UIViewContentModeScaleAspectFill;
imageview1.clipsToBounds = YES;

UIViewContentModeScaleAspectFill将填充image view的整个区域,保持aspect ratio完好无损。在填充整个image view的过程中,垂直水平长度将完全覆盖,填充将继续,直到其他维度完全填充为止。在此过程中,您的内容(跨垂直水平)将在框架外可见。要剪切这些额外内容,我们已将clipsToBounds的{​​{1}}属性设置为image view

YES将填充UIViewContentModeScaleAspectFit区域,直到image view'svertical任意长度完全填充,保持宽高比不变。如果您不需要将每个图像显示为与另一个方向相同的大小(如果垂直是完全填充而不是水平,反之亦然),则它非常有用。因为这将在未完全覆盖的方向上显示空白区域。