【Swift】【XCode】カメラとアルバムの使用方法

目次

カメラとアルバムの使用方法

使用するには、パーミッションのアプリ側の設定パーミッションのユーザーへの確認が必要になります。

アプリ側の設定

アプリ側の設定は、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
}
}

使用手順

  1. カメラ、カメラロール関係のデリゲートを紐付けるために、UIImagePickerControllerDelegateUINavigationControllerDelegateの実装と、Photsライブラリのインポートをします。
  2. UIImagePickerControllerでViewを生成します。
  3. データタイプを設定します。
  4. デリゲートを紐付けます
  5. 1で生成したViewを表示します。
  6. 撮影or画像選択後の処理と、キャンセル後の処理を実装する

1. カメラ、カメラロール関係のデリゲートを紐付けるために、UIImagePickerControllerDelegateUINavigationControllerDelegateの実装と、Photsライブラリのインポートをします。

1
2
3
4
5
//  Photsライブラリのインポートも必要
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
//  撮影 or アルバムからキャンセルで戻った場合
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
// 表示していたカメラピッカーViewを閉じる
picker.dismiss(animated: true, completion: nil)
}

// 動画や画像を選択した場合の処理
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {

if let pickerImage = info[.originalImage] as? UIImage{
// pickerImageを使用した処理

// 閉じる
picker.dismiss(animated: true, completion: nil)
}
}
Author

Daiki Iijima

Posted on

2021-08-08

Updated on

2024-04-17

Licensed under