我有一个表格,其中包含图片的路径,保存在用户的库中。然后,我将此路径传递给仅包含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];
}
原创(我想要类似的东西)
我的应用
答案 0 :(得分:2)
如果您的图片被剪切,原因是您在较小的容器中使用了更高分辨率的图像,并指示您的图像视图填充,使用此行imageView.contentMode = UIViewContentModeScaleAspectFill;
将其更改为imageView.contentMode = UIViewContentModeScaleAspectFit;
答案 1 :(得分:1)
我认为@ whitewolf09是对的,他的方法可以解决你的问题。但我建议你研究MGImageUtilities,这对于不同的情况非常有用,你可以裁剪图像,保持纵横比,使其适合你的图像视图的框架。
这是图像大小调整非常有用的类别,可能会在将来帮助您。
答案 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];
}