目次
カメラとアルバムの使用方法
使用するには、パーミッションのアプリ側の設定
、パーミッションのユーザーへの確認
が必要になります。
アプリ側の設定
アプリ側の設定は、Info.plist
に記述します。
以下の画像の2つの赤枠で囲まれている部分が今回追加するパーミッションです
- Privacy - Photo Library Usage Description : カメラロールへのアクセス権
- Privacy - Camera Usage Description : カメラへのアクセス権
右側のValue
欄にはパーミッションの確認をするときに表示する文字列を指定します。
ユーザーへの確認
カメラとカメラロールの場合、ユーザーへ該当機能を使用していいか確認をとるために、PHPhotoLibraryクラス
のrequestAuthorizationメソッド
を使用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| import Photos
PHPhotoLibrary.requestAuthorization(){(status) in switch(status){ case .authorized: print("authorized") break case .notDetermined: print("notDetermined") break case .restricted: print("restricted") break case .denied: print("denied") break case .limited: print("limited") break @unknown default: break } }
|
使用手順
- カメラ、カメラロール関係のデリゲートを紐付けるために、
UIImagePickerControllerDelegate
とUINavigationControllerDelegate
の実装と、Photsライブラリ
のインポートをします。
UIImagePickerController
でViewを生成します。
- データタイプを設定します。
- デリゲートを紐付けます
- 1で生成したViewを表示します。
- 撮影or画像選択後の処理と、キャンセル後の処理を実装する
1. カメラ、カメラロール関係のデリゲートを紐付けるために、UIImagePickerControllerDelegate
とUINavigationControllerDelegate
の実装と、Photsライブラリ
のインポートをします。
1 2 3 4 5
| import Phots
class ViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate { }
|
2. UIImagePickerController
でViewを生成します。
1
| let cameraPicker = UIImagePickerController()
|
3. データタイプを設定します。
1 2 3 4 5
| cameraPicker.sourceType = .camera
cameraPicker.sourceType = .photoLibrary
|
4. デリゲートを紐付けます
1
| cameraPicker.delegate = self
|
5. 1で生成したViewを表示します。
1
| self.present(cameraPicker, animated: true, completion: nil)
|
6. 撮影or画像選択後の処理と、キャンセル後の処理を実装する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { picker.dismiss(animated: true, completion: nil) }
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { if let pickerImage = info[.originalImage] as? UIImage{ picker.dismiss(animated: true, completion: nil) } }
|