UIImagePickerController
UIImagePickerControllerクラスを使用すると、画像を取得する事ができます。
画像の取得先は、カメラ、写真アルバム、フォトライブラリから指定する事ができます。
カメラを使ったアプリを作りたい時や、カメラで撮影した画像を使ったアプリを作りたい時に使用します。
UIImagePickerControllerのクラス階層
生成
//生成例
UIImagePickerController *ipc = [[UIImagePickerController alloc] init] autorelease];
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のメソッド
メソッド名 | 説明 |
---|---|
+ (BOOL)isSourceTypeAvailable: (UIImagePicker ControllerSourceType)sourceType |
指定した画像の取得先が使用できるかどうかを判定する (例)カメラが使用できるかどうかを判定する。 BOOL b = [UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]; (iPodTouchやiPadではカメラが付いていないため、NOが返される) |
主要なメソッドのみ掲載しています。
上記「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]; // モーダルビューを閉じる
// 何かの処理
}