【问题标题】:Scale for fullscreen camera on iPhone X缩放 iPhone X 上的全屏摄像头
【发布时间】:2017-12-14 18:58:59
【问题描述】:

我使用UIImagePickerController 在我的应用中实现了一个自定义相机。我之前通过申请this transformation使相机全屏:

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];
}

但是,相机并没有填满 iPhone X 的屏幕。它与屏幕顶部齐平,但底部有一个黑条。

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

【问题讨论】:

  • 其他@Matt:“我认为问题是 1.3 是垂直填充屏幕的错误比例”这听起来很合理。你能澄清一下问题是什么吗?您没有显示足够的代码来重现问题,甚至不清楚您认为自己要做什么。
  • @matt 对此感到抱歉。我的说明更好了吗?
  • 是的! — 我没有 iPhone X,所以无法测试。但是让我问你这个问题:如果你把硬编码的数字改成别的东西(更大?),会更好吗?

标签: ios objective-c uiimagepickercontroller cgaffinetransform iphone-x


【解决方案1】:

如果您可以计算该比率,那么在这里硬编码该比率没有多大意义。

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

另外请记住,如果您选择按比例缩放,转换此图像可能会导致部分图像被截断。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-20
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    • 2015-06-03
    • 2016-05-10
    相关资源
    最近更新 更多