コードで画像ピッカーを作成するにはどうすればよいですか?
私はiOS 6.0をARCで使用しています。
写真を選択して、選択した画像の UIImage を何とか取得したいと思います。
コードで画像ピッカーを作成するにはどうすればよいですか?
私はiOS 6.0をARCで使用しています。
写真を選択して、選択した画像の UIImage を何とか取得したいと思います。
基本的なインスタンス化は次のようになります
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
[imagePicker setDelegate:self];
imagePicker.modalPresentationStyle = UIModalPresentationOverFullScreen;
[self presentViewController:imagePicker animated:YES completion:nil];
画像を取得する方法は 3 つあります
//Pick from Camera
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;//Make sure to enable permission for this in info.plist; see: https://stackoverflow.com/a/44690117/2057171
//Pick from all folders in the gallery
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
//Pick from PhotosAlbum(camera roll)
imagePicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
次に、ソースの存在を確認します
//Check Camera available or not
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
//Check PhotoLibrary available or not
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])
//Check front Camera available or not
if ([UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront])
ユーザーが選択した画像を取得するには、デリゲート プロトコルを実装する必要があります。
//Tells the delegate that the user picked a still image or movie.
(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
UIImage *selectedImage = [info objectForKey:UIImagePickerControllerOriginalImage];
[imagepicker dismissModalViewControllerAnimated:YES];
}
//Tells the delegate that the user cancelled the pick operation.
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
}
UIImagePickerController を使用する簡単なチュートリアル
<UIImagePickerControllerDelegate>
ファイルの@interface ViewController
行にデリゲートを追加します.h
シミュレーターをデバッガーとして使用する場合は、シミュレーターに写真があることを確認してから、次のメソッドを呼び出します
- (void)showImagePicker
{
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.modalPresentationStyle = UIModalPresentationOverFullScreen;
[self presentModalViewController:imagePicker animated:YES];
}
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
// Get the selected image.
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
[picker dismissModalViewControllerAnimated:YES];
}
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[picker dismissModalViewControllerAnimated:YES];
}
それを提示するには:
UIImagePickerController *picker;
picker = [[UIImagePickerController alloc] init];
[picker setDelegate:self];
[picker setSourceType:type];
[self presentViewController:picker animated:YES completion:nil];
UIImage を取得するには:
- (void)imagePickerController:(UIImagePickerController *)thePicker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
// Do something with "image"
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
// users typically expect that if they took a photo it will be saved
if (thePicker.sourceType == UIImagePickerControllerSourceTypeCamera) {
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
}
}