iOS標準のカメラ画面ではなく独自に画面を作成する場合、
picker.showsCameraControls = NO; // デフォルトのカメラコントロールを非表示にする
を入れ、独自にビューを作成する。
そのビューはpicker.cameraOverlayViewに設定するか、もしくは
[window addSubview:ビュー];
で表示する。
オーバーレイの場合、viewDidLoadなどが呼び出されないので、nibが非常に使いにくい。
特に、pickerは起動時間にばらつきがあり、この時間をプログラム的に判定するには
viewWillApearを使う必要があるため、オーバーレイは使えない。
従って、オーバーレイをnibで作成する場合はaddSubviewで表示した方が良い。
というか、オーバーレイを使う意味はほとんどないと思うのだが。
カメラ画面を独自に作ってシャッター([picker takePicture])をユーザーが処理する場合、
その押下タイミングには注意が必要である。
まだ前回の撮影に伴う画像処理が終わっていないのに再度シャッターを切った場合、
内部的にエラーが発生し、撮像されない(シャッターが無視された形になる)。
このエラーはコンソールにログを出していると見えるのだが、プログラム的には検出できない。
これを避けるには、フラグを作って、imagePickerController:が呼び出されるまでは
次のシャッターを切らないようにする必要がある。
0 件のコメント:
コメントを投稿