La forma directa de mostrar la cámara es a través de la clase UIImagePickerController. Básicamente te permite abrir la cámara en todos los modos disponibles, hacer fotos, vídeos, ... Y usar un overlay que podéis colocar encima.
Sin embargo puede que por el diseño o los requisitos de vuestra aplicación el mencionado overlay no sea la opción más adecuada. ¿Cuál es la otra opción? : El framework AV Foundation.
Este método os va a permitir diseñar vuestra aplicación con vuestro Storyboard, XIB, ... y mostrar la previsualización de la cámara en el UIView que queráis. El cual no tiene porque ser de pantalla completa ni situarse en el centro.
Instrucciones:
- Añadir el framework de AV Foundation a vuestro proyecto.
- Necesitáis una referencia al UIView sobre el que queráis mostrar la cámara. Supongamos que la llamamos cameraView.
- Añadir el código:
- (void)startCameraPreview { NSLog(@"startCameraPreview"); captureSession = [[AVCaptureSession alloc] init]; AVCaptureDevice *captureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; NSError *error = nil; AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:captureDevice error:&error]; if (input) { [captureSession addInput:input]; AVCaptureVideoPreviewLayer *previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:captureSession]; // Custom Fix to fill the view CGRect bounds=self.cameraView.layer.bounds; previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill; previewLayer.bounds=bounds; previewLayer.position=CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds)); [self.cameraView.layer addSublayer:previewLayer]; [captureSession startRunning]; } else { // Handle the failure. } }
- No olvidéis llamar a stopRunning al acabar!
No hay comentarios:
Publicar un comentario