Ios iPhone X上全屏摄像头的比例

Ios iPhone X上全屏摄像头的比例,ios,objective-c,uiimagepickercontroller,cgaffinetransform,iphone-x,Ios,Objective C,Uiimagepickercontroller,Cgaffinetransform,Iphone X,我已经在我的应用程序中使用UIImagePickerController实现了一个自定义摄像头。我之前通过应用以下方法使相机全屏显示: 然而,iPhone X的屏幕上并没有摄像头。它与屏幕顶部齐平,但底部有一个黑色条 我认为问题在于1.3是垂直填充屏幕的错误比例。我希望iPhone X的摄像头能填满整个手机屏幕。如果你能计算出来,硬编码这个比例在这里没有多大意义 通过将屏幕高度(568)除以相机视图高度(426)计算出1.3333。这种逻辑在X上应该是一样的,但是你需要提供正确的参数,而不是假设

我已经在我的应用程序中使用
UIImagePickerController
实现了一个自定义摄像头。我之前通过应用以下方法使相机全屏显示:

然而,iPhone X的屏幕上并没有摄像头。它与屏幕顶部齐平,但底部有一个黑色条


我认为问题在于1.3是垂直填充屏幕的错误比例。我希望iPhone X的摄像头能填满整个手机屏幕。

如果你能计算出来,硬编码这个比例在这里没有多大意义

通过将屏幕高度(568)除以相机视图高度(426)计算出1.3333。这种逻辑在X上应该是一样的,但是你需要提供正确的参数,而不是假设所有的手机都有相同的屏幕尺寸


还请记住,如果选择按比例缩放,变换此图像可能会导致部分图像被切断。

Other@Matt:“我认为问题在于1.3是垂直填充屏幕的错误比例”,这听起来很合理。你能澄清问题是什么吗?您没有显示足够的代码来重现问题,甚至不清楚您想做什么。@matt对此表示抱歉。我的澄清是否更好?是的我没有iPhoneX,所以无法测试。但我要问你:如果你把硬编码的数字改成其他的(更大的?),会更好吗?
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
    ipc = [[UIImagePickerController alloc] init];
    ipc.delegate = self;

    ipc.sourceType = UIImagePickerControllerSourceTypeCamera;
    ipc.showsCameraControls = NO;

    [[NSBundle mainBundle] loadNibNamed:@"SnapItCameraView" owner:self options:nil];
    self.overlayView.frame = ipc.cameraOverlayView.frame;
    ipc.cameraOverlayView = self.overlayView;
    self.overlayView = nil;

    //For iphone 5+
    //Camera is 426 * 320. Screen height is 568.  Multiply by 1.333 in 5 inch to fill vertical
    CGAffineTransform translate = CGAffineTransformMakeTranslation(0.0, 71.0); //This slots the preview exactly in the middle of the screen by moving it down 71 points
    ipc.cameraViewTransform = translate;

    CGAffineTransform scale = CGAffineTransformScale(translate, 1.333333, 1.333333);
    ipc.cameraViewTransform = scale;
    ipc.showsCameraControls = NO;
    ipc.tabBarController.tabBar.hidden = YES;
    ipc.allowsEditing = NO;
    [self presentViewController:ipc animated:YES completion:nil];
}