この「撮影」と「選択」処理を1つのクラスで扱えるとはいえ、
この2つは無理矢理統合されている感が強く、基本的にはどちらで使うかによって
呼び出し方が異なる。
撮影処理は、クラスインスタンスを確保し、モードを設定して表示するだけで良い。
シャッターや前後カメラ切り替えなど、必要なボタンなどもすべて用意してくれる。
UIImagePickerController *picker= [[UIImagePickerController alloc]init]; picker.sourceType = UIImagePickerControllerSourceTypeCamera; // カメラを使う // 以下↓の設定は、↑この設定の後でなければならない picker.delegate = self; picker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto; // 静止画 [self presentModalViewController:picker animated:YES];UIImagePickerControllerはUINavigationControllerの子クラスでありそれを含んでいるが、
外部のUINavigationControllerとは連結できない。
従って、上位のビューがUINavigationControllerの管理下にあったとしても、
[self.navigationController pushViewController:ビューコントローラー animated:YES];で表示するのではなく、上記のようにpresentModalViewControllerを使う。
pickerの表示は、初回のみ時間がかかる。
シャッターを押すと撮影されるが、実際の画像ができあがるまでには時間がかかるため、
できあがった時点でデリゲートが呼び出される。
-(void)imagePickerController:(UIImagePickerController *)picker_ didFinishPickingMediaWithInfo:(NSDictionary *)info // 撮像処理(delegate) // 写真が取得可能になったら並行動作で呼び出され、この中を走っている間、メインも走り続ける { // 画像はinfoから取り出す。 UIImage *image=[info objectForKey:UIImagePickerControllerOriginalImage]; }
(次回に続く)
0 件のコメント:
コメントを投稿