在不打开相机应用程序的情况下,在我自己的uiview中打开相机

liv*_*v a 0 iphone camera objective-c uiimagepickercontroller

我的Iphone应用程序使用相机,我有以下代码:

UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = NO;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.cameraDevice = UIImagePickerControllerCameraDeviceFront;

[self presentViewController:picker animated:YES completion:NULL];
Run Code Online (Sandbox Code Playgroud)

我希望相机应用程序不会打开,相反我会在我自己的uiview中使用相机,或者uiimageview可以吗?

我尝试过这行代码而不是 [self presentViewController:picker animated:YES completion:NULL];:

[self.view addSubview:picker];
Run Code Online (Sandbox Code Playgroud)

这会导致异常 [UIImagePickerController superview]: unrecognized selector sent to instance

解决方案: 我找到了这个很棒的教程,包括代码示例和下载项目

iOS*_*Dev 8

您可以使用以下代码实现此目的:

#import <AVFoundation/AVFoundation.h>

AVCaptureSession *session = [[AVCaptureSession alloc] init];
AVCaptureDevice *videoDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if (videoDevice)
{
    NSError *error;
    AVCaptureDeviceInput *videoInput = [AVCaptureDeviceInput deviceInputWithDevice:videoDevice error:&error];
    if (!error)
    {
        if ([session canAddInput:videoInput])
        {
            [session addInput:videoInput];
            AVCaptureVideoPreviewLayer *previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:session];
            previewLayer.frame = self.view.bounds;
            [self.view.layer addSublayer:previewLayer];
            [session startRunning];
        }
    }
}
Run Code Online (Sandbox Code Playgroud)