写真アルバム
Tatsuro Ueda edited this page Mar 13, 2014
·
4 revisions
写真アルバムを表示するためのソースコード。
UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
if ( [UIImagePickerController isSourceTypeAvailable:sourceType] ) {
UIImagePickerController* picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = sourceType;
[self presentViewController:picker animated:YES completion:nil];
}
souceTypeプロパティに指定できる定数一覧
UIImagePickerControllerSourceType | 役割 |
---|---|
UIImagePickerControllerSourceTypePhotoLibrary | 写真アルバムから写真を選択する画面を開く |
UIImagePickerControllerSourceTypeCamera | カメラを起動して写真を撮る画面を開く |
UIImagePickerControllerSourceTypeSavedPhotosAlbum | 保存した写真の一覧(カメラ対応デバイスならフォトライブラリ)を直接開く |
UIImagePickerControllerを表示するためのメソッドだが、UIImagePickerController自体がUINavigationControllerのサブクラスであるため、UINavigationControllerのpushViewController:animated:メソッドは使えない。すでにUINavigationControllerの管理下にある場合は、presentController:animated:completion:
メソッドでUIImagePickerControllerをモーダル表示するのが一般的だ。
また、写真アルバムを表示し、ユーザが写真を選択すると、delegateプロパティに設定したデリゲートに対してimagePickerController:didFinishPickingMediaWithInfo:
メソッドで通知される。選択された写真はinfo(NSDictionary)からUIImagePickerControllerOriginalImage
をキーにして、UIImageのインスタンスとして取得できる。
- (void) imagePickerController:(UIImagePickerController*)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
// 選択(or撮影)した写真を取得
UIImage* image = info[UIImagePickerControllerOriginalImage];
self.imageView.image = image;
// 写真アルバムを閉じる
[self dismissViewControllerAnimated:YES completion:nil];
}
また、必要ならimagePickerControllerDidCancel:
メソッドで写真選択のキャンセルも検知可能である。
- (void) imagePickerControllerDidCancel:(UIImagePickerController*)picker
{
// キャンセルされたときにおこなうべき処理をし、そのあと写真アルバムを閉じる
[self dismissViewControllerAnimated:YES completion:nil];
}