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
Répondre
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
Je n'ai pas de construire ma propre méthode de culture? c'est construit dedans? –
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
bon point. Merci pour la réponse en profondeur. –
Regardez dans 'UIImagePickerController' – Pierce
Je vais poster une réponse qui va vous montrer comment le faire, mais vous devriez toujours lire la documentation à ce sujet – Pierce