iOS
UIImagePickerController
Recherche…
Introduction
UIImagePickerController fournit une solution quasiment prête à l'emploi pour permettre à l'utilisateur de sélectionner une image à partir de son périphérique ou de prendre une photo avec l'appareil photo, puis de présenter cette image. En vous conformant à UIImagePickerControllerDelegate, vous pouvez créer une logique qui spécifie dans votre application comment présenter l'image et comment l'utiliser (en utilisant didFinishPickingMediaWithInfo) et si l'utilisateur refuse de sélectionner une image ou de la prendre (en utilisant imagePickerControllerDidCancel) ).
Utilisation générique de UIImagePickerController
Étape 1: Créez le contrôleur, définissez le délégué et conformez-vous au protocole
//Swift
class ImageUploadViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
let imagePickerController = UIImagePickerController()
override func viewDidLoad() {
super.viewDidLoad()
imagePickerController.delegate = self
}
}
//Objective-C
@interface ImageUploadViewController : UIViewController <UIImagePickerControllerDelegate,UINavigationControllerDelegate> {
UIImagePickerController *imagePickerController;
}
@end
@implementation ImageUploadViewController
- (void)viewDidLoad {
[super viewDidLoad];
imagePickerController.delegate = self;
}
@end
note: En réalité, nous UINavigationControllerDelegate
rien de défini dans UINavigationControllerDelegate
, mais UIImagePickerController
hérite de UINavigationController
et modifie le comportement de UINavigationController
. Par conséquent, nous devons encore dire que notre contrôleur de vue est conforme à UINavigationControllerDelegate
.
Étape 2: Chaque fois que vous devez montrer UIImagePickerController
:
//Swift
self.imagePickerController.sourceType = .Camera // options: .Camera , .PhotoLibrary , .SavedPhotosAlbum
self.presentViewController(self.imagePickerController, animated: true, completion: nil)
//Objective-C
imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera; // options: UIImagePickerControllerSourceTypeCamera, UIImagePickerControllerSourceTypePhotoLibrary, UIImagePickerControllerSourceTypeSavedPhotosAlbum
[self presentViewController:imagePickerController animated:YES completion:nil];
Étape 3: implémentez les méthodes de délégué:
//Swift
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
// Your have pickedImage now, do your logic here
}
self.dismissViewControllerAnimated(true, completion: nil)
}
func imagePickerControllerDidCancel(picker: UIImagePickerController) {
self.dismissViewControllerAnimated(true, completion: nil)
}
//Objective-C
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *pickedImage = info[UIImagePickerControllerOriginalImage];
if (pickedImage) {
//You have pickedImage now, do your logic here
}
[self dismissViewControllerAnimated:YES completion:nil];
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
[self dismissViewControllerAnimated:YES completion:nil];
}