フォトライブラリから画像を取得する方法です。カメラで撮影した写真の取得もほとんど同じなのでセットで説明します
スポンサーリンク
info.plistにプライバシーの情報を追加
フォトライブラリを使うときは
Privacy – Photo Library Usage Description(NSPhotoLibraryUsageDescription)
カメラを使うときは
Privacy – Camera Usage Description(NSCameraUsageDescription)
を追加して利用目的を書きます
これを入れないでフォトライブリやカメラを起動しようとするとアプリがストンと落ちます
フォトライブラリの画像を取得
iPadだとポップオーバーで表示するようにしています
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.photoLibrary) {
let picker = UIImagePickerController()
picker.modalPresentationStyle = UIModalPresentationStyle.popover
picker.delegate = self // UINavigationControllerDelegate と UIImagePickerControllerDelegateを実装する
picker.sourceType = UIImagePickerControllerSourceType.photoLibrary
if let popover = picker.popoverPresentationController {
popover.sourceView = self.view
popover.sourceRect = loadImageButton.frame // ポップオーバーの表示元となるエリア
popover.permittedArrowDirections = UIPopoverArrowDirection.any
}
self.present(picker, animated: true, completion: nil)
}
カメラで撮影した画像を取得
カメラの場合は、iPadでもフルスクリーン表示にします
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera) {
let picker = UIImagePickerController()
picker.modalPresentationStyle = UIModalPresentationStyle.fullScreen
picker.delegate = self // UINavigationControllerDelegate と UIImagePickerControllerDelegateを実装する
picker.sourceType = UIImagePickerControllerSourceType.camera
self.present(picker, animated: true, completion: nil)
}
画像の取得完了処理
フォトライブラリから読み込んだ画像と、カメラで撮影した画像を受け取る共通のメソッド
UIImagePickerControllerDelegateで定義されているメソッドです
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
// pickedImageが読み込まれた画像なので、あとはお好きに
}
picker.dismiss(animated: true, completion: nil)
}
すごく簡単ですね