Cámara con vista personalizada

Mi aplicación usa cámara, me gustaría agregar una superposición sobre la vista previa de la cámara. Por ejemplo, quiero usar un marco de imagen cuando uso la cámara, también me gustaría agregar una barra personalizada para las operaciones de la cámara. Amablemente ayúdame a hacer lo mismo.

Puede estar intentando usar UIImagePickerController. Pero sé que esta es una solución a tu problema. Puede hacerlo fácilmente usando las clases AVCamCaptureManager y AVCamRecorder. Apple tiene una versión de progtwig de demostración en su sitio de desarrollador aquí . Se llama AVCam. En palabras simples, lo que hace es cuando hace clic para abrir la cámara, llama a las clases y métodos que son responsables de abrir la cámara del iPhone y grabar video o capturar audio. Llama a las mismas clases que son llamadas por UIImagePickerController. Entonces, su cámara se abrirá y comenzará a recibir información.

Ahora, si abre el archivo xib de ese proyecto AVCam, encontrará un pequeño objeto UIView. Esta vista es responsable de mostrar la alimentación de la cámara. Puede cambiar el tamaño de esa vista según el tamaño que desee y la entrada de la cámara se mostrará en esa área. También puede colocar la imagen de marco alrededor de su elección.

Me funcionó cuando quería cambiar el tamaño del avance de entrada de la cámara y capturar fotos. Espero que funcione para ti también.

Cree un UIImagePickerController desde el código, ajuste sus propiedades, agregue una superposición en él y, con su controlador, controle lo que quiera en esa superposición: controles personalizados, superposición de imágenes, etc.

Eso da algo como esto:

 self.picker = [[UIImagePickerController alloc] init]; self.picker.sourceType = UIImagePickerControllerSourceTypeCamera; self.picker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto; self.picker.cameraDevice = UIImagePickerControllerCameraDeviceRear; self.picker.showsCameraControls = NO; self.picker.navigationBarHidden = YES; self.picker.toolbarHidden = YES; self.picker.wantsFullScreenLayout = YES; // Insert the overlay self.overlay = [[OverlayViewController alloc] initWithNibName:@"Overlay" bundle:nil]; self.overlay.pickerReference = self.picker; self.picker.cameraOverlayView = self.overlay.view; self.picker.delegate = self.overlay; [self presentModalViewController:self.picker animated:NO]; 

OverlayViewController es el controlador que debe escribir para controlar todo lo que agrega a la superposición.

pickerReference es una propiedad que puedes conservar para enviar pedidos a la cámara. Por ejemplo, puede llamar a lo siguiente de un IBAction proveniente de un UIButton colocado en la superposición:

 [self.pickerReference takePicture]; 

Lea la referencia de la clase UIImagePickerController , eso está en la documentación …

Existen propiedades para esto, especialmente las propiedades cameraOverlayView y showsCameraControls .

De modo que puede ocultar los controles, proporcionar una vista de superposición personalizada y agregar subvistas a esta vista personalizada para agregar botones personalizados, marcos, etc.

Swift 3 versión para respuesta de Oliver:

 self.picker = UIImagePickerController() self.picker.sourceType = .camera self.picker.cameraCaptureMode = .photo self.picker.cameraDevice = .rear self.picker.showsCameraControls = false self.picker.isNavigationBarHidden = true self.picker.isToolbarHidden = true // Insert the overlay self.overlayViewController = self.storyboard?.instantiateViewController(withIdentifier: "Overlay") as! OverlayViewController self.picker.cameraOverlayView = self.overlayViewController.view self.picker.delegate = self.overlayViewController self.navigationController?.present(self.picker, animated: true, completion: nil) 

Protocolos OverlayViewController:

 class OverlayViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate