使用overlay来裁剪UIImagePickerController

时间:2014-08-19 07:08:20

标签: ios iphone image cocoa-touch uiimagepickercontroller

我正在尝试为UIImagePickerController创建一个方形叠加层。

我创建了一个NIB,其顶部和底部视图覆盖了UIImagePickerController,效果很好。

拍摄照片时,照片从高到宽的比例似乎是1.33333。然而,框架从高度到宽度的比率(在iphone 4s上)是1.5。

如何获得frame拍摄照片的确切UIImagePickerController?它不能覆盖整个屏幕,除非在添加到父视图时被拉伸。

我需要正确的框架,以便裁剪image创建的UIImagePickerController。我不想让用户手动裁剪图像。

由于

2 个答案:

答案 0 :(得分:0)

在这篇文章的帮助下,我找到了答案:

How to crop UIImagePickerController taken picture as it is on display

当用户拍照时,UIImagePickerController似乎没有显示整个相框。

对于iPhone 4s,图像的两侧被剪掉。如果您不使用叠加层,则可以在拍照后清楚地看到这一点。

答案 1 :(得分:0)

如果要创建方形叠加层,请使用:

UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.allowsEditing = YES;

要以全屏显示捕获的图像,请使用:

picker.allowsEditing = NO;
CGSize screenSize = [[UIScreen mainScreen] bounds].size;
float cameraAspectRatio = 4.0 / 3.0;
float imageWidth = floorf(screenSize.width * cameraAspectRatio);
float scale = ceilf((screenSize.height / imageWidth) * 10.0) / 10.0;

imagePicker.cameraViewTransform = CGAffineTransformMakeScale(scale, scale)