【发布时间】:2015-09-28 11:47:21
【问题描述】:
您好,我正在使用UIImagePickerController 和源型相机。我想知道它没有像 iOS 联系人应用程序那样显示完整的捕获模式(从相机拍摄个人资料照片)。
我的代码显示了黑屏的顶部和底部栏,iOS 原生显示全屏捕获相同的下一个重拍屏幕。
【问题讨论】:
您好,我正在使用UIImagePickerController 和源型相机。我想知道它没有像 iOS 联系人应用程序那样显示完整的捕获模式(从相机拍摄个人资料照片)。
我的代码显示了黑屏的顶部和底部栏,iOS 原生显示全屏捕获相同的下一个重拍屏幕。
【问题讨论】:
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];
【讨论】:
我相信这是UIImagePickerController 的默认行为(至少在某些设备上,捕获区域周围有黑条)。
通讯录应用可能只是在演示之前更改其-cameraViewTransform 属性以使用捕获视图填充整个屏幕,但此设置会根据您即将使用的设备和捕获质量而有所不同。
【讨论】:
UIImagePickerController 的 -cameraViewTransform 属性,但它的位置在 Capture 和 Retake 屏幕 IIRC 之间不一致,因此您必须制作 A)通过修改/调动捕获功能等来获得更深层次的魔力,或者 B) 使用完全不同的第 3 方组件。 UIImagePickerController 基本上不能自定义。