iPhone/iPadで写真の撮影・保存・読込が出来るアプリを作って見ました。iOS5.0以降で、ARCを有効にして作成しています。
画像ピッカーの表示
写真を撮影する処理と、ライブラリから読み込む処理は、sourceTypeが違うだけで、基本的には同一です。
sourceTypeに渡す値
UIImagePickerController* picker = [[UIImagePickerController alloc] init];
picker.sourceType = sourceType;
picker.delegate = self;
picker.sourceType = sourceType;
picker.delegate = self;
ピッカーを表示
iPhoneならモーダルビューとして、iPadならポップオーバーコントロールとして表示します。popoverCtlはヘッダで宣言しています。
if([[UIDevice currentDevice].model rangeOfString:@"iPad"].location == NSNotFound){//iPhone
[self presentModalViewController:picker animated:YES];
}else{//iPad
UIButton * button = [[self.view subviews] objectAtIndex:1];
popoverCtl = [[UIPopoverController alloc] initWithContentViewController:picker];
[popoverCtl presentPopoverFromRect:[button bounds] inView:button permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
[self presentModalViewController:picker animated:YES];
}else{//iPad
UIButton * button = [[self.view subviews] objectAtIndex:1];
popoverCtl = [[UIPopoverController alloc] initWithContentViewController:picker];
[popoverCtl presentPopoverFromRect:[button bounds] inView:button permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
ピッカーからの戻り値(画像)を処理
写真を撮影した場合は、1番目のメソッドが、キャンセルした場合は2番目のメソッドが実行されます。
-(void)imagePickerController: (UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{//selected
UIImage* image = [info objectForKey:UIImagePickerControllerOriginalImage];
[_imageView setImage:image];
[self dismissModalViewControllerAnimated:YES];//iPhone
[popoverCtl dismissPopoverAnimated:YES];//iPad
}
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{//canceled
[self dismissModalViewControllerAnimated:YES];//iPhone
}
UIImage* image = [info objectForKey:UIImagePickerControllerOriginalImage];
[_imageView setImage:image];
[self dismissModalViewControllerAnimated:YES];//iPhone
[popoverCtl dismissPopoverAnimated:YES];//iPad
}
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{//canceled
[self dismissModalViewControllerAnimated:YES];//iPhone
}
画像をライブラリに保存
UIImageViewからUIImageを取り出し、アルバムに保存しています。
UIImage *image = [_imageView image];
if(image == nil){
[self showAlert:@"" text:@"保存する画像がありません。"];
return;
}
UIImageWriteToSavedPhotosAlbum(image, self, @selector(finishExport:didFinishSavingWithError:contextInfo:), NULL);
if(image == nil){
[self showAlert:@"" text:@"保存する画像がありません。"];
return;
}
UIImageWriteToSavedPhotosAlbum(image, self, @selector(finishExport:didFinishSavingWithError:contextInfo:), NULL);
プロジェクト
プロジェクトをダウンロードしてお試し下さい。iPhoneとiPadの両方に対応しています。iOS5以降で、ARCを有効にしています。
ダウンロード: Camera