我的UIImageView
大小为366 x 375(由NSLog
语句确认)和UIImage
大小为400 x 600(再次通过日志声明确认) )。我尝试设置contentMode
以保留图像的宽高比,但是当我运行我的应用时,图像始终会失真。
我尝试依次将UIView
的内容模式设置为UIViewContentModeScaleAspectFit
和UIViewContentModeScaleAspectFill
。在这两种情况下,照片仍然以相同的方式扭曲。我也试过,只是为了踢,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
不影响我的图片显示方式,我该如何解决?最终我想使用缩放方面填充选项,因此图像视图中没有空白区域,但也保留了方面。
答案 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
后设置内容模式