iOSアプリ:画像(写真)選択画面をUIImagePickerControllerを使って表示する
iphoneで画像選択画面を出すには、ViewControllerの
- (void)viewDidAppear:(BOOL)animated
メソッドを、以下のように書きなおせば良い。
昔は
presentModalViewController:animated:
を使っていたが、これはdeprecatedとして警告が出るようになった。かわりに
presentViewController:animated:completion:
を使う。
if([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypePhotoLibrary]==NO){ NSLog(@"Photo Library not available."); // 写真選択画面(フォトアルバム)は使えない } UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypePhotoLibrary; if([UIImagePickerController isSourceTypeAvailable:sourceType]){ UIImagePickerController *picker = [[UIImagePickerController alloc] init]; picker.delegate = self; // pickerのdisFinishPickingMediaWithInfo:を使うため picker.sourceType = sourceType; [self presentViewController:picker animated:YES completion:nil]; }
ここでデリゲートを設定したので、ViewController.h(ヘッダーファイル)にデリゲートに関する記述を追加しておく。
@interface ViewController : UIViewController <UINavigationControllerDelegate,UIImagePickerControllerDelegate> @end
このようにして画像選択画面が表示できるが、これだと画像を選択しただけで終わってしまう。
選択した写真が表示されるようにするには、このviewControllerにUIimageView(*iv)を追加して、そこに画像選択画面から選択したUIImage(*image)を貼り付ける次のようなコードを追加しておけばよい。
- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{ UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; if(!image){ image = [info objectForKey:UIImagePickerControllerOriginalImage]; } UIImageView *iv = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 300, 300)]; iv.image = image; [self.view addSubview:iv]; [self dismissViewControllerAnimated:YES completion:NULL]; }
その他つまづきそうなところ:
iOSシミュレータの写真ライブラリに画像や写真を追加するには
・シミュレータ画面に画像をドラッグ&ドロップする。
・自動的にサファリで画像が開かれるので、画像を長押ししてフォトライブラリに保存すれば選択できるようになる。
参考リンク:http://nicomelmo.blog118.fc2.com/blog-entry-693.html
iOSシミュレータでhomeボタンを押すには
・Command+Shift+Hを使う