2017-02-02 3 views
-2

J'ai un UIImageView que je veux ouvrir l'appareil photo afin que l'utilisateur peut prendre une photo, la recadrer (la partie difficile), puis avoir l'app store dans une classe que j'ai déjà écrite. Je n'ai jamais travaillé avec l'appareil photo auparavant, donc je ne suis pas sûr de savoir comment y arriver.Prendre une photo avec l'appareil photo et l'utiliser comme "image de profil" dans l'application

+0

Regardez dans 'UIImagePickerController' – Pierce

+0

Je vais poster une réponse qui va vous montrer comment le faire, mais vous devriez toujours lire la documentation à ce sujet – Pierce

Répondre

1

Vous devez mettre en œuvre le UIImagePickerController - cela signifie aussi que vous avez besoin de votre ViewController pour se conformer à la l'UIImagePickerControllerDelegate et UINavigationControllerDelegate. Tout d'abord vous assurer que votre ViewController fait ceci:

class YourViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 

Ensuite, vous pouvez créer une méthode qui montrera la caméra:

func showCamera() { 
    // Check if the device has a camera 
    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera) { 

     // Device has a camera, now create the image picker controller 
     let imagePicker = UIImagePickerController() 
     imagePicker.delegate = self 
     imagePicker.sourceType = UIImagePickerControllerSourceType.camera 
     imagePicker.allowsEditing = false 

     self.present(imagePicker, animated: true, completion: nil) 

    } 
    else { 
     NSLog("No Camera") 
    } 
} 

Ensuite, vous devez avoir cette méthode dans le cadre de la UIImagePickerControllerDelegate qui se chargera de l'image prise par l'utilisateur avec leur appareil photo:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 

    // To dismiss the image picker 
    self.dismiss(animated: true, completion: nil) 

    let chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage 

    // Do whatever you wish with the image 
} 

Vous devez également noter que Apple a mis en place de nouveaux protocoles de confidentialité. Si vous souhaitez accéder à l'appareil photo ou à la bibliothèque de photos de l'utilisateur, vous devez accéder à votre Info.plist et ajouter un NSPhotoLibraryUsageDescription. Dans le cas contraire, votre application se bloquera en essayant d'accéder à la caméra. Aller à votre plist et insérer une nouvelle ligne, puis coller NSPhotoLibraryUsageDescription et ils le convertiront automatiquement pour dire quelque chose comme "Confidentialité - Accès à la caméra". Vous devez ensuite entrer une description dans la colonne de valeur indiquant pourquoi vous devez accéder à la caméra. Cette description s'affichera à l'utilisateur lorsqu'il lui sera demandé d'autoriser l'accès de votre application à la caméra.

Aussi, si vous voulez que votre utilisateur pour recadrer l'image après prendre la photo, changer cette valeur allowsEditing lorsque vous instancier le UIImagePickerController à true

+0

Je n'ai pas de construire ma propre méthode de culture? c'est construit dedans? –

+0

Je crois que oui - vous devez l'essayer pour vous-même, mais je pense qu'il est possible d'utiliser simplement l'un d'Apple déjà créé. Pourquoi réinventer la roue? – Pierce

+0

bon point. Merci pour la réponse en profondeur. –