27 votes

Comment créez-vous une vue de caméra personnalisée, au lieu de UIImagePickerViewController?

J'ai créé une application simple en utilisant UIImagePickerViewController pour capturer à partir de la caméra, mais je voudrais personnaliser l'interface pour la saisir à partir de la caméra, comme l'ajout de quelques boutons.

UIImagePickerViewController ne permet pas cela directement, alors comment créer une vue personnalisée qui permet d'afficher le flux de caméra en direct et de le capturer?

28voto

Anomie Points 43759

Le moyen le plus simple est de continuer à utiliser UIImagePickerViewController mais de définir showsCameraControls sur NO et de fournir votre propre interface utilisateur en utilisant cameraOverlayView .

La façon la plus difficile (mais plus flexible) est d'utiliser les classes AVFoundation (en particulier AVCaptureVideoPreviewLayer et AVCaptureStillImageOutput ) pour construire votre propre caméra.

22voto

Oliver Points 10593

Oui, créer un UIImagePickerController de code, d'ajuster ses propriétés, ajouter une superposition sur elle, et avec vous, contrôleur, contrôle que vous voulez sur ce segment : les contrôles personnalisés, en superposant les images, etc...

Qui donne quelque chose comme ceci :

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 est le contrôleur que vous devez écrire à contrôler tout ce que vous ajoutez sur la superposition.

pickerReference est une propriété que vous pouvez garder pour vous envoyer des commandes de la caméra. Par exemple, vous pourriez appeler la suivante à partir d'une IBAction à venir à partir d'un UIButton placé sur le recouvrement :

[self.pickerReference takePicture];

4voto

Vijay Kiran Points 475

Vous devez définir la valeur de showCameraControls sur NO et fournir votre propre vue de superposition personnalisée à l'aide de cameraOverlayView.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X