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];

}


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow