iPhoneアプリ開発の虎の巻
HOME > UIImagePickerController

UIImagePickerController

UIImagePickerControllerクラスを使用すると、画像を取得する事ができます。
画像の取得先は、カメラ、写真アルバム、フォトライブラリから指定する事ができます。

カメラを使ったアプリを作りたい時や、カメラで撮影した画像を使ったアプリを作りたい時に使用します。

UIImagePickerControllerのクラス階層

NSObjectUIResponderUIViewControllerUINavigationController ↑ UIImagePickerController

生成

//生成例
UIImagePickerController *ipc = [[UIImagePickerController alloc] init] autorelease];

UIImagePickerControllerのプロパティ

【UIImagePickerControllerの主要プロパティ】
プロパティ名/型 読専 説明
delegate デリゲートを指定する
(例)ipc.delegate = self;
※UINavigationControllerDelegateと、UIImagePickerControllerDelegateを実装する必要あり。
sourceType
(UIImagePicker
ControllerSourceType)
画像の取得先を指定する
UIImagePickerControllerSourceTypePhotoLibrary
 :フォトライブラリから
UIImagePickerControllerSourceTypeCamera
 :カメラから
UIImagePickerControllerSourceTypeSavedPhotosAlbum
 :フォトアルバムから

(例)カメラから画像を取得する
ipc.sourceType = UIImagePickerControllerSourceTypeCamera;
allowsEditing
BOOL
取得した画像を編集するかどうかの指定
YES:編集する
NO:編集しない
(例)画像選択後に画像の編集をする
 ipc.allowsEditing = YES;

主要なプロパティのみ掲載しています。
 上記「UIImagePickerControllerのクラス階層」にあるクラスのプロパティも使用できます。

UIImagePickerControllerのメソッド

【UIImagePickerControllerの主要メソッド】
メソッド名 説明
+ (BOOL)isSourceTypeAvailable:
(UIImagePicker
ControllerSourceType)sourceType
指定した画像の取得先が使用できるかどうかを判定する
(例)カメラが使用できるかどうかを判定する。
BOOL b = [UIImagePickerController
 isSourceTypeAvailable:
 UIImagePickerControllerSourceTypeCamera];
(iPodTouchやiPadではカメラが付いていないため、NOが返される)

主要なメソッドのみ掲載しています。
 上記「UIImagePickerControllerのクラス階層」にあるクラスのメソッドも使用できます。

UIImagePickerControllerのデリゲートメソッド

【UIImagePickerControllerの主要デリゲートメソッド】
メソッド名 説明
- (void)imagePickerController:
(UIImagePickerController *)picker
didFinishPickingImage:(UIImage *)image
editingInfo:(NSDictionary *)editingInfo
画像が選択された時に呼ばれるメソッド
- (void)imagePickerControllerDidCancel:
(UIImagePickerController *)picker
画像の選択をキャンセルした時に呼ばれるメソッド

主要なデリゲートメソッドのみ掲載しています。

UIImagePickerController例文

//Delegateを宣言
@interface hoge : UIViewController
        <UINavigationControllerDelegate, UIImagePickerControllerDelegate>{
}
//カメラが使用できるかどうか判定。可なら生成して呼び出す
if([UIImagePickerController
    isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]){
    UIImagePickerController *ipc =
        [[[UIImagePickerController alloc] init] autorelease];  // 生成
    ipc.delegate = self;  // デリゲートを自分自身に設定
    ipc.sourceType =
        UIImagePickerControllerSourceTypeCamera;  // 画像の取得先をカメラに設定
    ipc.allowsEditing = YES;  // 画像取得後編集する
    [self presentModalViewController:ipc animated:YES];
        // モーダルビューとしてカメラ画面を呼び出す
}
//画像が選択された時に呼ばれるデリゲートメソッド
-(void)imagePickerController:(UIImagePickerController*)picker
      didFinishPickingImage:(UIImage*)image editingInfo:(NSDictionary*)editingInfo{

    [self dismissModalViewControllerAnimated:YES];  // モーダルビューを閉じる

    // 渡されてきた画像をフォトアルバムに保存する
    UIImageWriteToSavedPhotosAlbum(
      image, self, @selector(targetImage:didFinishSavingWithError:contextInfo:),
      NULL);	
}
//画像の保存完了時に呼ばれるメソッド
-(void)targetImage:(UIImage*)image
        didFinishSavingWithError:(NSError*)error contextInfo:(void*)context{

  if(error){
    // 保存失敗時
  }else{
    // 保存成功時
  }
}

//画像の選択がキャンセルされた時に呼ばれる
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{
    [self dismissModalViewControllerAnimated:YES];  // モーダルビューを閉じる
	// 何かの処理
}
totop