Vidéo: Utiliser Photos sur votre iPhone 2025
Nous montrons ci-dessous comment travailler avec des images dans des applications iOS, à un niveau d'abstraction similaire à celui des enregistrements vidéo. Commencez par vous montrer comment les variables sont initialisées dans la méthode ViewDidLoad (en particulier, notez l'initialisation de la variable membre localImage).
- (void) viewDidLoad {[super viewDidLoad]; // Effectue une configuration supplémentaire après le chargement de la vue. NSString * imagePath = [[NSBundle mainBundle] pathForResource: @ "Images. Bundle / BookFront" deType: @ "png"]; localImage = [[UIImage alloc] initWithContentsOfFile: imagePath];}
Vous voyez ici comment les images sont affichées:
- (IBAction) showImage: (id) expéditeur {imageView. image = image locale; [imageView setNeedsDisplay];}
Enfin, voici la méthode takeImage qui contient le code pour prendre l'image:
- (IBAction) takeImage: (id) expéditeur {UIImagePickerController * imagePicker = [[UIImagePickerController alloc] init]; imagePicker. sourceType = UIImagePickerControllerSourceTypeCamera; imagePicker. mediaTypes = [[NSArray alloc] initWithObjects: (NSString *) kUTTypeImage, nil]; imagePicker. déléguer = soi-même; [[UIApplication sharedApplication] setStatusBarHidden: YES]; [self presentViewController: imagePicker animated: YES completion: nil];}
Le code pour prendre une image fixe est presque identique à celui de l'enregistrement d'une vidéo. La seule différence est que la propriété mediaTypes de l'objet imagePicker est définie sur kUTTypeImage (alors qu'elle est définie sur kUTTypeMovie lors de l'enregistrement d'une vidéo).
Vous êtes probablement familiarisé avec l'utilisation du contrôleur de vue en tant qu'objet délégué à imagePicker et dans le but des deux méthodes suivantes: imagePickerControllerDidCancel et didFinishPickingMediaWithInfo. Cette imagePickerControllerDidCancel est appelée lorsque l'utilisateur annule l'opération:
- (void) imagePickerControllerDidCancel: (UIImagePickerController *) sélecteur {[[UIApplication sharedApplication] setStatusBarHidden: NO]; [picker dismissViewControllerAnimated: YES achèvement: nil];}
Comme vous pouvez le voir, didFinishPickingMediaWithInfo est appelé après la prise de vue. Ici, l'image nouvellement prise est définie dans la vue d'image du contrôleur de vue d'image.
- (void) imagePickerController: sélecteur (UIImagePickerController *) didFinishPickingMediaWithInfo: résultats (NSDictionary *) {localImage = (UIImage *) [résultats objectForKey: UIImagePickerControllerOriginalImage]; imageView. image = image locale; [imageView setNeedsDisplay]; [[UIApplication sharedApplication] setStatusBarHidden: NO]; [picker dismissViewControllerAnimated: YES achèvement: nil];}
Le code d'utilisation de l'enregistreur vidéo dans une application et le code pour prendre des images ainsi que le code pour l'envoi d'e-mails et de SMS sont très similaires.Dans les deux cas, un objet d'un contrôleur de vue spécifique à une tâche est instancié par le contrôleur de vue en cours d'exécution.
Dans le cas de l'e-mail, c'est MFMailComposeViewController; dans le cas SMS, c'est MFMessageComposeViewController; et dans les cas d'enregistrement vidéo et de capture d'image, c'est le UIImagePickerController. Le contrôleur de vue en cours d'exécution se définit alors en tant que délégué dans le contrôleur de vue spécifique à la tâche. Enfin, le contrôleur de vue spécifique à la tâche est présenté et le contrôleur de vue actuel se ferme.
Lorsque le contrôleur de vue spécifique à la tâche (c'est-à-dire l'instance de UIImagePickerController, MFMailComposeViewController ou MFMessageComposeViewController) se ferme, la méthode déléguée du contrôleur de vue d'origine est appelée, soit pour traiter les données renvoyées par l'enregistreur, soit l'appareil photo ou pour faire face à des erreurs et des annulations.
