Je ai besoin d'aide. Je dois intégrer l'appareil photo à mon application et je souhaite en savoir plus sur les points suivants:
Quelqu'un pourrait-il s'il vous plaît me diriger dans la bonne direction?
Eh bien, UIImagePickerController
est l’outil dont vous avez besoin. Il fera la plupart des choses dans cette liste de contrôle.
Pour le bouton, vous pouvez créer un bouton personnalisé avec des graphiques ou si vous envisagez d'utiliser une barre d'outils ou une barre de navigation pour maintenir vos boutons, vous pouvez créer le bouton de barre à l'aide de l'élément UIBarButtonSystemItemCamera
system. Cela vous donnera l'image du cadre.
En appuyant dessus, vous allez créer une instance UIImagePickerController
et la présenter de manière modale.
UIImagePickerController * imagePicker = [[UIImagePickerController alloc] init];
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.delegate = self;
[self presentModalViewController:imagePicker animated:YES];
[picker release];
Comme vous l'avez sûrement remarqué, il possède une propriété delegate
qui est définie par id < UIImagePickerControllerDelegate, UINavigationControllerDelegate> delegate;
. Vous devrez donc adopter les deux protocoles, mais dans la plupart des cas, vous n'implémenterez que deux méthodes: imagePickerControllerDidCancel:
et imagePickerController:didFinishPickingMediaWithInfo:
. Il existe une autre méthode dans le protocole UIImagePickerControllerDelegate
mais elle est obsolète. Ne l'utilisez pas même si vous le voyez beaucoup mentionné ici. Vous vous attendez à ce que le gestionnaire d'annulation soit écrit comme ceci,
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
[self dismissModalViewControllerAnimated:YES];
}
Les autres méthodes permettent de faire la plupart des choses.
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage * image = [info objectForKey:UIImagePickerControllerEditedImage];
// You have the image. You can use this to present the image in the next view like you require in `#3`.
[self dismissModalViewControllerAnimated:YES];
}
La prise de vue est effectuée automatiquement par l'instance UIImagePickerController
. Toutefois, si vous souhaitez remplacer leurs contrôles, vous pouvez le faire en définissant showsCameraControls
sur NO
, puis en implémentant votre propre cameraOverlayView
. Si vous l'avez déjà fait et avez assigné un bouton pour prendre la photo, vous pouvez réellement déclencher l'action d'image à l'aide de la méthode takePicture
. Donc, cela devrait adresser #2
.
Vous pouvez également utiliser d'autres propriétés pour ajuster votre sélecteur d'images. Par exemple, vous pouvez limiter l'utilisateur à la prise d'images uniquement à l'aide de la propriété mediaTypes
.
En reformulant la documentation, dismissModalViewControllerAnimated:
est obsolète à partir de iOS6. Utilisez dismissViewControllerAnimated:completion:
à la place.