UIImageView显示放大的图像

时间:2013-09-15 14:45:33

标签: ios objective-c uiimageview

不确定我做错了什么,但随后查看我刚刚使用我的应用拍摄的图像,图像被放大到原始图像上的特定位置,我不知道为什么。

这是我加载和显示图像的代码。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:imageName];
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:path]];
imageView.contentMode = UIViewContentModeScaleAspectFill;

2 个答案:

答案 0 :(得分:1)

这是因为您使用图像分配init,而不是使用修复大小。你的图像比你想象的要大,看起来像是“放大”。

这样做:

UIImageView* yourImageView = [[UIImageView alloc]initWithFrame:CGRectMake(x, y, width, height)];
yourImageView.image = [UIImage imageWithContentsOfFile:path];
yourImageView.contentMode = UIViewContentModeScaleAspectFill;
yourImageView.clipsToBounds = YES;

答案 1 :(得分:1)

您的图片正在缩放,因为您已经告诉该视图:

imageView.contentMode = UIViewContentModeScaleAspectFill;

用简单的英语,这是告诉图像视图通过缩放来使图像适合视图而不调整宽高比"。

如果您不想缩放图片,可以选择几个选项。您可以确保UIImageView与您要在其中显示的图片具有相同的宽高比,或者您可以将内容模式更改为其他内容(例如UIViewContentModeScaleToFill,这会将您的图片拉伸到适合,或UIViewContentModeCenter,它将使其居中)。