【问题标题】:UIIMagePickerController + Camera + full screen capture photoUIIMagePickerController + Camera + 全屏抓图
【发布时间】:2015-09-28 11:47:21
【问题描述】:

您好,我正在使用UIImagePickerController 和源型相机。我想知道它没有像 iOS 联系人应用程序那样显示完整的捕获模式(从相机拍摄个人资料照片)。

我的代码显示了黑屏的顶部和底部栏,iOS 原生显示全屏捕获相同的下一个重拍屏幕。

这是我的屏幕截图

【问题讨论】:

    标签: ios iphone


    【解决方案1】:
    UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
    
    imagePickerController.delegate = self;
    imagePickerController.mediaTypes = [NSArray arrayWithObjects:(NSString *)kUTTypeImage, nil];
    imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
    imagePickerController.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
    
    UIView *controllerView = imagePickerController.view;
    
    controllerView.alpha = 0.0;
    controllerView.transform = CGAffineTransformMakeScale(0.5, 0.5);
    
    [[[[UIApplication sharedApplication] delegate] window] addSubview:controllerView];
    
    [UIView animateWithDuration:0.3
                  delay:0.0
                options:UIViewAnimationOptionCurveLinear
             animations:^{
                 controllerView.alpha = 1.0;
             }
             completion:nil];
    

    【讨论】:

    • 不工作,但缩小我想要的相机精确的 Iphone 原生联系人应用程序在使用相机编辑个人资料照片时打开捕获图像
    • @sanjay,你在这里做的事情——很可能——非常,但非常错误的想法。您正在从处理其所有功能的视图控制器中撕下一个视图,当谈论像这样的私有的、Apple 提供的类时,这绝不是一个好的选择。在最好的情况下,这会导致无效/无法工作的代码泄漏,在更糟糕的情况下,会立即崩溃。
    【解决方案2】:

    我相信这是UIImagePickerController 的默认行为(至少在某些设备上,捕获区域周围有黑条)。

    通讯录应用可能只是在演示之前更改其-cameraViewTransform 属性以使用捕获视图填充整个屏幕,但此设置会根据您即将使用的设备和捕获质量而有所不同。

    【讨论】:

    • 正如我所说,您可以尝试在向用户显示之前更新 UIImagePickerController 的 -cameraViewTransform 属性,但它的位置在 Capture 和 Retake 屏幕 IIRC 之间不一致,因此您必须制作 A)通过修改/调动捕获功能等来获得更深层次的魔力,或者 B) 使用完全不同的第 3 方组件。 UIImagePickerController 基本上不能自定义。
    • 你说得对。设置 CGFloat cameraTransformX = 1 后; CGFloat cameraTransformY = 1.5; Camerapicker.cameraViewTransform = CGAffineTransformScale(Camerapicker.cameraViewTransform, cameraTransformX, cameraTransformY);选择器显示全屏,但重拍屏幕仍保留为默认选择器显示
    • 是的,但请记住: • 正确/精确的像素完美转换值因设备和方向而异 • 您应该使用相同的值转换两个轴,否则捕获视图会失真
    • 我不太了解转换是否高于价值,或者请告诉我什么应该最适合不同的设备
    • 嗯,1.5 应该可以解决问题 :) 但在 X 和 Y 两侧都应用它。您可以尝试使用较小的值,直到出现黑边。最佳值将是捕获视图框架和屏幕框架之间的计算,以使用 screen.width/capture.width 和 screen.height/capture.height 的 MAX,但这仍然是模糊的,你甚至没有(公共) 直接访问相机视图以获取其帧。对于基本用途,任何保加利亚常数都可以。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多