在运行
iOS 10
的设备上,相机预览显示黑屏。但在旧版本中它可以正常工作。
我正在使用
UIImagePickerController
。self.sourceType = UIImagePickerControllerSourceTypeCamera;
我的 info.plist 文件:
示例项目:https://github.com/arturdev/cameraTest
iOS 10
的设备上,相机预览显示黑屏。UIImagePickerController
。self.sourceType = UIImagePickerControllerSourceTypeCamera;
示例项目:https://github.com/arturdev/cameraTest
下面是另一种解决方案:UIImagePickerController类仅支持竖屏模式。此类旨在以现有形式使用,不支持子类化。该类的视图层次结构是私有的,不能修改,但有一个例外。您可以将自定义视图分配给cameraOverlayView属性,并使用该视图呈现其他信息或管理相机接口与代码之间的交互。
self.imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
self.imagePickerController.showsCameraControls = NO;
self.imagePickerController.delegate = self;
[self.view addSubview:self.imagePickerController.view];
[self addChildViewController:self.imagePickerController];
[self.imagePickerController didMoveToParentViewController:self];
在所有iOS版本和设备上都能正常工作。:):)请使用UIImagePickerController()
代替其他任何初始化方法。
我遇到了同样的问题,原因是调用了错误的初始化方法。
dispatch_async(dispatch_get_current_queue(), ^(void){
//Code related to show UIImagePickerController
.....
self.imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
self.imagePickerController.showsCameraControls = NO;
self.imagePickerController.delegate = self;
[self.view addSubview:self.imagePickerController.view];
[self addChildViewController:self.imagePickerController];
[self.imagePickerController didMoveToParentViewController:self];
.....
});
----- 检查 info.plist >Bundle display name:
如果 info.plist >Bundle display name 为空,则添加 Bundle display name 键和值 your application name 。
------ 将相机隐私设置为info.plist
以访问相机:
相机:
键 :Privacy - Camera Usage Description
值 :$(PRODUCT_NAME) camera use
------ 不要子类化 UIImagePickerController
:(如 Ankit Gupta 的答案建议)
UIImagePickerController类仅支持纵向模式。此类旨在按原样使用,不支持子类化。
将自定义视图分配给cameraOverlayView
属性,并使用该视图呈现其他信息或管理相机界面与代码之间的交互。
Reference:https://developer.apple.com/reference/uikit/uiimagepickercontroller
-viewDidLoad
方法已经在主线程中执行,所以不需要再次在主线程中调度。我的info.plist已经修改过了,但是还是不起作用。 - arturdev也许你忘记了呈现UIImagePickerController,这就是为什么你得到空白屏幕的原因 :-
[self presentViewController:yourImagePickerController animated:YES completion:NULL];
我曾经遇到过同样的问题。iOS10有些奇怪。所以我想出了解决方案。即使您正在使用UIImagePickerController或将其与您的视图控制器扩展,只需在viewDidLoad中创建一个UIImagePickerController
实例并呈现它即可。
UIImagePickerController *imagePickerController = [UIImagePickerController alloc];
[self presentViewController:imagePickerController animated:YES completion:nil];