수색…


소개

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