-
Couldn't load subscription status.
- Fork 473
Camera Quickstart
This is a quickstart guide for using the taking a photo or picking an image from the camera roll using the stock camera and camera roll. In both cases, we'll modally present the UIImagePickerController class which has a delegate. The delegate has a method which is called after a user takes/picks a picture.
As of iOS 10, the following camera and photo library usage descriptions are required in the info.plist. The description you enter will be shown to the user when prompted to allow permissions to the camera or photo library.
<key>NSPhotoLibraryUsageDescription</key> <!-- added this for photo library permission -->
<string>NeedLibrary access for uploading Images</string> <!-- added this for photo library permission -->
<key>NSCameraUsageDescription</key> <!-- added this for camera permission -->
<string>Need camera access for uploading Images</string> <!-- added this for camera permission -->-
Add
UIImagePickerControllerDelegateandUINavigationControllerDelegatewhen defining your class or as an extension of your view controller class.class PhotoMapViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { ... }
let vc = UIImagePickerController()
vc.delegate = self
vc.allowsEditing = true
vc.sourceType = UIImagePickerControllerSourceType.camera
self.present(vc, animated: true, completion: nil)NOTE: The Xcode simulator does not support taking pictures, so you may want to check that the camera is indeed supported on the device before trying to present it.
if UIImagePickerController.isSourceTypeAvailable(.camera) {
print("Camera is available 📸")
vc.sourceType = .camera
} else {
print("Camera 🚫 available so we will use photo library instead")
vc.sourceType = .photoLibrary
}func imagePickerController(_ picker: UIImagePickerController,
didFinishPickingMediaWithInfo info: [String : Any]) {
// Get the image captured by the UIImagePickerController
let originalImage = info[UIImagePickerControllerOriginalImage] as! UIImage
let editedImage = info[UIImagePickerControllerEditedImage] as! UIImage
// Do something with the images (based on your use case)
// Dismiss UIImagePickerController to go back to your original view controller
dismiss(animated: true, completion: nil)
}When the user finishes taking the picture, UIImagePickerController returns a dictionary that contains the image and some other meta data. The full set of keys are listed here.
-
Add
UIImagePickerControllerDelegateandUINavigationControllerDelegatewhen defining your class or as an extension of your view controller class.class PhotoMapViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { ... }
let vc = UIImagePickerController()
vc.delegate = self
vc.allowsEditing = true
vc.sourceType = UIImagePickerControllerSourceType.photoLibrary
self.present(vc, animated: true, completion: nil)func imagePickerController(_ picker: UIImagePickerController,
didFinishPickingMediaWithInfo info: [String : Any]) {
// Get the image captured by the UIImagePickerController
let originalImage = info[UIImagePickerControllerOriginalImage] as! UIImage
let editedImage = info[UIImagePickerControllerEditedImage] as! UIImage
// Do something with the images (based on your use case)
// Dismiss UIImagePickerController to go back to your original view controller
dismiss(animated: true, completion: nil)
}