본문 바로가기

iOS

YPImagePicker

728x90

UIImagePicker와 PHPicker로 앱을 만드려고 하다보면 .. 생각보다 제한이 많을 수 있다 ..

그래서 오픈라이브러리를 사용하게 되는데, 그 중 하나가 YPImagePicker다.

 

Usage

자세한 설치 방법 및 사용법은 깃허브를 통해서 확인할 수 있다. 

 

설치를 한 뒤에 제일 먼저 설정해야 하는 것이 있다.

Info.plist 설정

Info.plist에서 설정을 해야하는 세가지가 있다.

이 때 의문이 드는 것이 하나 있다. 만약 사진 촬영을 하지 않는 경우, Info.plist에서 사진 촬영 접근 권한을 삭제해도 되는 것인가? 라는 의문이다.

 

🤔 프로젝트에서 사용하지 않는 경우는 접근 권한을 추가 하지 않아도 괜찮지 않을까? 

사실 이 내용때문에 이 글을 쓰게 되었다.

 

결론부터 말하자면 NOPE !! 안된다.

프로젝트 내 코드에서는 사진 촬영 관련 코드를 작성하지 않더라도, YPImagePicker에서 사진 촬영 관련 코드를 작성하고 있기 때문에 Info.plit에서 설정을 해야 한다.

 

안그러면 .. 리젝 당한다 !!!! 

 

Info.plist 설정을 다 했다면, 이제 사진촬영/갤러리 접근을 하는 곳에 가서 코드를 구현하면 된다.

 

나는 아래와 같이 버튼을 눌렀을 때 코드가 실행되도록 작성했다.

    @IBAction func YPImagePickerButtonClicked(_ sender: UIButton) {
        let picker = YPImagePicker()
        picker.didFinishPicking { [unowned picker] items, _ in
            if let photo = items.singlePhoto {
                // 사진을 고르고 나서 아래의 코드 실행
                print(photo.fromCamera) // Image source (camera or library)
                print(photo.image) // Final image selected by the user
                print(photo.originalImage) // original image selected by the user, unfiltered
                print(photo.modifiedImage) // Transformed image, can be nil
                print(photo.exifMeta) // Print exif meta data of original image.
                
                // 사진을 골랐다면, 화면의 이미지뷰에 고른 사진이 보여지도록 설정 
                self.resultImageView.image = photo.image
            }
            picker.dismiss(animated: true, completion: nil)
        }
        present(picker, animated: true, completion: nil)
    }

 

이렇게 하면 사진 촬영 후 해당 사진을 사용할 수도 있고 갤러리에 있는 사진을 선택할 수 있다.