[Swift3]カメラロールから写真を選択する

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る
Swift

UIImagePickerControllerを利用して、カメラロールからユーザーが選択した写真を取得して使用する処理を実装する。

今回作るもの

画像表示エリアに、ユーザーがカメラロールから選択した写真を表示する。「初期化」ボタンを押した時に画像をリセットする機能も実装する。

下準備

Info.plistの設定

カメラロールにアクセスするため、Info.plistに「Privacy – Photo Library Usage Description」の記述が必要。

Info.plistの設定

デリゲートの批准

カメラロールから写真を選択する処理で必要なUIImagePickerControllerDelegateUINavigationControllerDelegateの2つのデリゲートを批准する。

IBOutlet/IBActionの接続

画像を表示するUIImageView、画像を選択するUIButton、画像をリセットするUIButtonを接続する。

初期画像の設定

viewDidLoadにて、あらかじめ表示しておく画像を設定する。

カメラロールから写真を選択する処理

カメラロールを表示する

UIImagePickerControllerクラスを利用して、カメラロールを表示するビューを作成し、表示する。

カメラロールから写真が選ばれたら、その写真を取得する

カメラロールから写真が選択されると、imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any])メソッドが呼び出される。

このメソッドの引数infoに選択した写真が格納されているので、UIImageとして取得すれば良い。

写真をリセットする処理

imageViewに画像をセットするだけで良いが、せっかくなのでアラートで確認してから初期化を行う。

完成したソース

余談:もしカメラロールの使用許可が出ていないと?

ユーザーがカメラロール使用の許可/不許可を選択する場面で、もし不許可とした場合はどうなるのか?

この場合、カメラロールのビューは表示されるが「許可がありません」という旨のメッセージが表示される。アプリが落ちるわけではないので特段気にする必要はないが、設定画面に遷移するなどの設計があれば親切だろう。

許可が出ていない場合のカメラロール画面

許可が出ていない場合のカメラロール画面

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

SNSでもご購読できます。