サーチ…


前書き

UIImagePickerControllerは、ユーザーがデバイスから画像を選択したり、カメラで画像を撮影してからその画像を表示できるようにするための、すぐに使えるソリューションを提供します。 UIImagePickerControllerDelegateに準拠させることで、画像の提示方法とその処理(didFinishPickingMediaWithInfoを使用)を指定するロジックを作成することができます。また、ユーザーが画像の選択や画像の取得を拒否した場合の対処方法(imagePickerControllerDidCancel )。

UIImagePickerControllerの一般的な使用法

手順1:コントローラを作成し、デリゲートを設定し、プロトコルに準拠させる

//Swift
class ImageUploadViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
    
    let imagePickerController = UIImagePickerController()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        imagePickerController.delegate = self
    }
}

//Objective-C
@interface ImageUploadViewController : UIViewController <UIImagePickerControllerDelegate,UINavigationControllerDelegate> {

    UIImagePickerController *imagePickerController;

}

@end

@implementation ImageUploadViewController

- (void)viewDidLoad {

    [super viewDidLoad];

    imagePickerController.delegate = self;

}

@end

注意:私たちは、実際に定義されて何も実装しないだろうUINavigationControllerDelegate 、しかし、 UIImagePickerControllerから継承UINavigationControllerとの動作変更UINavigationController 。したがって、我々はまだビューコントローラがUINavigationControllerDelegate準拠していると言う必要があります。

ステップ2: UIImagePickerControllerを表示する必要があるときはいつでも:

//Swift
self.imagePickerController.sourceType = .Camera // options: .Camera , .PhotoLibrary , .SavedPhotosAlbum
self.presentViewController(self.imagePickerController, animated: true, completion: nil)

//Objective-C
imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera; // options: UIImagePickerControllerSourceTypeCamera, UIImagePickerControllerSourceTypePhotoLibrary, UIImagePickerControllerSourceTypeSavedPhotosAlbum
[self presentViewController:imagePickerController animated:YES completion:nil];

ステップ3:デリゲートメソッドを実装する:

//Swift
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
    if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
        // Your have pickedImage now, do your logic here
    }
    self.dismissViewControllerAnimated(true, completion: nil)
}

func imagePickerControllerDidCancel(picker: UIImagePickerController) {
    self.dismissViewControllerAnimated(true, completion: nil)
}

//Objective-C
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

   UIImage *pickedImage = info[UIImagePickerControllerOriginalImage];

    if (pickedImage) {
    
        //You have pickedImage now, do your logic here
    
    }

    [self dismissViewControllerAnimated:YES completion:nil];

}

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {

    [self dismissViewControllerAnimated:YES completion:nil];

}


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow