2011年12月7日水曜日

UIImagePickerControllerの使い方(1)

UIImagePickerControllerはiOS上で画像の撮影・選択処理を一括して行えるクラスである。
この「撮影」と「選択」処理を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 件のコメント:

コメントを投稿