使用相机作为子视图

jes*_*bon 2 iphone objective-c ipad ios

我在我的应用程序中使用UIImagePickerControllerSourceTypeCamera,但想要将摄像机视图添加到子视图中.不是模态视图.

现在我正在使用

UIImagePickerController * picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.delegate = self;
[self presentModalViewController:picker animated:YES];   
Run Code Online (Sandbox Code Playgroud)

我想像这样使用它,但似乎不起作用..

UIImagePickerController * picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.delegate = self;
[picker.view setFrame:CGRectMake(300, 40, 300, 200)];
[self.view addSubview:picker.view];
Run Code Online (Sandbox Code Playgroud)

我知道UIImagePickerControllerSourceTypeCamera只能用作模态视图.例如Hipstamatic如何使用它?

Dre*_*w C 10

这在使用AVCaptureSession框架的 iOS 4+中是可能的.它比使用UIImagePickerController复杂得多,但您可以完全控制输入和输出.将摄像机视图作为子视图的关键是以下代码.假设您有一个名为previewView的子视图,您想要显示摄像机视图:

AVCaptureSession *session = [[AVCaptureSession alloc] init];
AVCaptureVideoPreviewLayer *previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:session];
previewLayer.frame = self.previewView.bounds; 
[self.previewView.layer addSublayer:previewLayer];
Run Code Online (Sandbox Code Playgroud)

还有更多的设置工作要做,以使AVCaptureSession对象具有正确的输入和输出设备,并实际捕获照片.这可以在Web上的文档和示例中找到.