Reputation: 486
I'm trying to display a UIImagePickerController that allows users to select either a UIImage or a PHLivePhoto.
import Photos
var imagePicker = UIImagePickerController()
if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) {
imagePicker.delegate = self
imagePicker.sourceType = .savedPhotosAlbum
imagePicker.mediaTypes = ["kUTTypeImage","kUTTypeLivePhoto"]
}
When displaying the view controller, I get the following error:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'No available types for source 2'
Upvotes: 0
Views: 2163
Reputation: 134
var imag:UIImagePickerController?
print("Camera")
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera){
print("Button capture")
self.imag = UIImagePickerController()
self.imag!.delegate = self
self.imag!.sourceType = UIImagePickerControllerSourceType.Camera
self.imag!.cameraDevice = UIImagePickerControllerCameraDevice.Front
self.imag!.mediaTypes = [kUTTypeImage as String]
self.imag!.allowsEditing = false
self.presentViewController(self.imag!, animated: true, completion: nil)
}
print("Gallery")
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.PhotoLibrary){
print("Button capture")
self.imag = UIImagePickerController()
self.imag!.delegate = self
self.imag!.sourceType = UIImagePickerControllerSourceType.PhotoLibrary;
//imag.mediaTypes = [kUTTypeImage];
self.imag!.allowsEditing = false
self.presentViewController(self.imag!, animated: true, completion: nil)
}
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
}
Upvotes: 0
Reputation: 2988
So kUTTypeLivePhoto is only available from ios 9.1 and above so you should probably consider putting a version check. Also if you
import MobileCoreServices
you can use kUTTypeLivePhoto and kUTTypeImage directly.
if #available(iOS 9.1, *) {
picker.mediaTypes = [kUTTypeLivePhoto as String, kUTTypeImage as String
} else {
picker.mediaTypes = [kUTTypeImage as String];
};
Hope this helps.
Upvotes: 2