UIImagePickerControllerを利用する場合の注意点

iPhoneのカメラロールやカメラ機能を利用する場合、それが簡易なものでよければUIImagePickerControllerを利用するのが一番簡単です。

ただし、UIImagePickerControllerには大きな制約が2つあるので注意が必要です。

1. 回転ができない

UIImagePickerControllerは回転をすることができません。

iOS Developer Libraryには次の注意書きが記されています。

IMPORTANT

The UIImagePickerController class supports portrait mode only.

Portrait modeとは、要するにiPhoneの縦置きスタイルのことです。これはiPadも同じで、ランドスケープ(横置き)で使っている場合にUIImagePickerControllerを呼び出すと、呼び出している間だけ強制的にポートレートモードに切り替わってしまうので注意が必要です。

2. カスタムクラスが作れない

上記の注意書きを読み進めてみると、続いて次のような記述があります。

This class is intended to be used as-is and does not support subclassing. The view hierarchy for this class is private and must not be modified, with one exception.

UIImagePickerControllerを継承したクラスを作ることはサポートされていないようです。これに反してこれを継承したクラスを作成するとAppleの審査ではねられる、との情報もありました。

この例外はcameraOverlayViewで、これはUIImagePickerControllerの見た目を調整したり追加情報を表示したりするために使われます。

上記の問題点を回避してカスタムするには

これらの問題を回避して完全にカスタマイズしたものが欲しい場合、Photos frameworkを利用する必要があるようです。

自分でめんどうを見なければならないPhotos frameworkを利用するか、簡易で済むが制約の大きいUIImagePickerControllerを利用するか、という選択の問題になりそうです。

参考