0

私は、ユーザーが「鏡」(デバイスの正面カメラ)で自分自身を見ることができるアプリを作成しています。ビューオーバーレイを使用してUIImageViewControllerを作成する複数の方法を知っていますが、アプリで逆の方法にする必要があります。私のアプリでは、カメラビューをメインビューのサブビューにし、シャッターアニメーションや写真のキャプチャやビデオの撮影を行わず、フルスクリーンにしないようにします。何か案は?

4

1 に答える 1

15

これを実現する最善の方法は、組み込みのUIImagePickerControllerを使用するのではなく、AVFoundationクラスを使用することです。

を作成しAVCaptureSession、適切な出力と入力を設定する必要があります。AVCapturePreviewLayer構成が完了すると、ViewControllerで構成したビューに追加できるを取得できます。プレビューレイヤーには、プレビューの表示方法を制御できるいくつかのプロパティがあります。

AVCaptureSession *session = [[AVCaptureSession alloc] init];
AVCaptureOutput *output = [[AVCaptureStillImageOutput alloc] init];
[session addOutput:output];

//Setup camera input
NSArray *possibleDevices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
//You could check for front or back camera here, but for simplicity just grab the first device
AVCaptureDevice *device = [possibleDevices objectAtIndex:0];
NSError *error = nil;
// create an input and add it to the session
AVCaptureDeviceInput* input = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error]; //Handle errors

//set the session preset 
session.sessionPreset = AVCaptureSessionPresetMedium; //Or other preset supported by the input device   
[session addInput:input];

AVCaptureVideoPreviewLayer *previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:session];
//Set the preview layer frame
previewLayer.frame = self.cameraView.bounds;
//Now you can add this layer to a view of your view controller
[self.cameraView.layer addSublayer:previewLayer]
[session startRunning];

次にcaptureStillImageAsynchronouslyFromConnection:completionHandler:、出力デバイスのを使用して画像をキャプチャできます。

AVFoundationの構造の詳細と、これを行う方法の例については、AppleDocsを確認してください。AppleのAVCamDemoは、これらすべてを同様にレイアウトします

于 2012-06-27T18:03:06.113 に答える