设置UIImageView contentMode显示无效

时间:2015-09-03 18:03:39

标签: ios objective-c uiimageview

我的UIImageView大小为366 x 375(由NSLog语句确认)和UIImage大小为400 x 600(再次通过日志声明确认) )。我尝试设置contentMode以保留图像的宽高比,但是当我运行我的应用时,图像始终会失真。

我尝试依次将UIView的内容模式设置为UIViewContentModeScaleAspectFitUIViewContentModeScaleAspectFill。在这两种情况下,照片仍然以相同的方式扭曲。我也试过,只是为了踢,UIContentModeLeft,这也导致了相同的扭曲演示。我的理解是这3种模式应该呈现出截然不同的图像。

我通过视图控制器代码完成了ctrl-f,但只有contentMode次出现,而且我正在设置属性。我应该看看其他可能会干扰的属性吗?

以下是设置图像视图和附带图像的代码。这是整个项目中引用图像视图的唯一代码。此外,我没有使用任何类型的自动布局功能,但我不明白为什么这会影响宽高比和内容模式无论如何。

NSData *imageData = [NSData dataWithContentsOfURL:filePath];
self.imageView.contentMode = UIViewContentModeScaleAspectFit;
self.imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, self.height*.11, self.width, self.height*.55)];
self.imageView.image = [UIImage imageWithData:imageData];
NSLog(@"Image height and width are %f and %f", self.imageView.image.size.height, self.imageView.image.size.width);
NSLog(@"imageview height and width are %f and %f", self.imageView.frame.size.height, self.imageView.frame.size.width);

[self.view addSubview: self.imageView];

为什么contentMode不影响我的图片显示方式,我该如何解决?最终我想使用缩放方面填充选项,因此图像视图中没有空白区域,但也保留了方面。

1 个答案:

答案 0 :(得分:2)

试试这个

self.imageView.contentMode = UIViewContentModeScaleAspectFill

修改

self.imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0,      self.height*.11, self.width, self.height*.55)];
self.imageView.contentMode = UIViewContentModeScaleAspectFit;
self.imageView.image = [UIImage imageWithData:imageData];
 NSLog(@"Image height and width are %f and %f",    self.imageView.image.size.height, self.imageView.image.size.width);
NSLog(@"imageview height and width are %f and %f", self.imageView.frame.size.height, self.imageView.frame.size.width);

[self.view addSubview: self.imageView];

在分配imageview

后设置内容模式