繁体   English   中英

iphone 5 - 屏幕上的中心UIImagePickerController

[英]iphone 5 - center UIImagePickerController on the screen

我使用以下代码为相机创建了自定义叠加层:

- (void) showCamera {
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
    self.picker = [[UIImagePickerController alloc] init];
    self.picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    self.picker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
    self.picker.cameraDevice = UIImagePickerControllerCameraDeviceRear;
    self.picker.showsCameraControls = NO;
    self.picker.navigationBarHidden = YES;
    self.picker.toolbarHidden = YES;

    self.overlay = [[CameraOverlayViewController alloc] init];
    self.overlay.pickerReference = self.picker;
    self.picker.cameraOverlayView = self.overlay.view;
    self.picker.delegate = self.overlay;

    [self presentViewController:self.picker animated:NO completion:nil];
}

它在iphone 4上工作正常(因为相机覆盖整个屏幕),但在iphone 5上,相机位于屏幕顶部,底部留下黑色方块。 因为我无法改变相机尺寸,至少我想将它放在屏幕中间,然后添加UIViews作为边距(非常类似于苹果的相机胶卷应用程序,其中相机不在屏幕的顶部,并且它上面和下面都有控制)。

有人可以建议我在这种情况下如何控制相机框架? 此外,由于边距仅用于更好的可视化,我可能不想在iphone 4或ipad屏幕上显示它们。

提前致谢 !

使用cameraViewTransform属性更改摄像机的y位置。 例如:

if(IS_IPHONE_5){
    CGAffineTransform tr =  self.imagePickerController.cameraViewTransform;
    tr.ty = 70;
    self.imagePickerController.cameraViewTransform= tr;
}

其中IS_IPHONE_5是:

#define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )

因为我们知道相机的长度始终与屏幕宽度相同:

//以4:3的比例获得相机高度

int cameraViewHeight = SCREEN_WIDTH * 1.333;

//获取屏幕高度和相机高度之间的差异。 通过除以2来分配。

int adjustedYPosition = (SCREEN_HEIGHT - cameraViewHeight) / 2;

//调整图像选择器控制器

CGAffineTransform translate = CGAffineTransformMakeTranslation(0, adjustedYPosition);
self.imagePicker.cameraViewTransform = translate;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM