iOS:ImageView充满了图片

时间:2014-02-25 11:54:17

标签: ios objective-c

我有一个表格,其中包含图片的路径,保存在用户的库中。然后,我将此路径传递给仅包含imageView的视图。我想用图片填充这个ImageView。像WhatsApp(当你点击个人资料的图片时)。但是,我的照片总是裁剪或扭曲。我尝试了不同的方法,但我找不到最好的方法:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.navigationController.navigationBar.translucent = NO;

    UIImage *picture = [UIImage imageWithContentsOfFile: self.picturePath]; //I passed this path from the previous View
    UIImageView* imageView = [[UIImageView alloc] initWithImage:picture];

    CGRect screenRect = [[UIScreen mainScreen] bounds];

    imageView.frame = CGRectMake(0, 0, screenRect.size.width, screenRect.size.height);
    imageView.contentMode = UIViewContentModeScaleAspectFill;

    [self.view addSubview:imageView];
}

Original Image, I want to show this 原创(我想要类似的东西)

My app我的应用

3 个答案:

答案 0 :(得分:2)

如果您的图片被剪切,原因是您在较小的容器中使用了更高分辨率的图像,并指示您的图像视图填充,使用此行imageView.contentMode = UIViewContentModeScaleAspectFill;

将其更改为imageView.contentMode = UIViewContentModeScaleAspectFit;

答案 1 :(得分:1)

我认为@ whitewolf09是对的,他的方法可以解决你的问题。但我建议你研究MGImageUtilities,这对于不同的情况非常有用,你可以裁剪图像,保持纵横比,使其适合你的图像视图的框架。

  1. 只需#import“UIImage + ProportionalFill.h”
  2. UIImage * image = [[UIImage imageWithContentsOfFile:filePath] imageScaledToFitSize:imageView.frame.size];
  3. 这是图像大小调整非常有用的类别,可能会在将来帮助您。

答案 2 :(得分:0)

我认为它被剪裁的原因是你正在用图片创建图像视图然后设置框架,可能图片比框架大,所以它剪裁它。还可以尝试将方面更改为:'UIViewContentModeScaleAspectFit'试试这个:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.navigationController.navigationBar.translucent = NO;

    UIImage *picture = [UIImage imageWithContentsOfFile:self.picturePath]; //I passed this path from the previous View
    UIImageView* imageView = [[UIImageView alloc] initWithRect:CGRectMake(0, 0, screenRect.size.width, screenRect.size.height);];

    CGRect screenRect = [[UIScreen mainScreen] bounds];

    imageView.image = picture;
    imageView.contentMode = UIViewContentModeCenter;

    [self.view addSubview:imageView];
}