- This topic has 0개 답변, 1명 참여, and was last updated 4 years, 7 months 전에 by 5anniversary.
-
글쓴이글
-
-
5anniversary참가자
- 글작성 : 14
- 답글작성 : 7
안녕하세요!! 이번 시간에는 YPImagePicker를 사용해본 사용기를 남기려 합니다.
동아리 내에서 프로젝트를 진행하다 보니 게시글을 올릴 때 이미지를 다중으로 넘겨야 하는 일이 필요해져서
사용하고 있던 기본 ImagePicker라이브러리로는 한계가 있더라구요.
이 문제를 해결할 방안이 두 가지가 있었는데 PhotoKit을 사용해 새로운 라이브러리를 생성하거나, 이미 만들어진 오픈소스 라이브러리를 사용하는 방법이었는데…
현재 빠른 배포를 목표로 하고 있어서 오픈소스 라이브러리를 선택했습니다.
그래서!!!!
이미지를 다중으로 선택할 수 있는 라이브러리를 찾다 찾다 YPImagePicker 라는 라이브러리를 선택했습니다.
선택한 이유는
괜찮은 디자인, 많은 star 수, 간단한 사용법, 그리고 PHAsset을 건드리지 않고 UIImage로 받아서 표현할 수 있다는 점 때문에 선택을 했습니다.
사용하기 전 사진첩, 카메라, 녹음 기능이 각각 필요하기 때문에 info.plist에서 아래와 같이 추가해 주셔야 합니다.
<key>NSCameraUsageDescription</key>
<string>카메라 사용을 위한 설명</string>
<key>NSMicrophoneUsageDescription</key>
<string>녹음기 사용을 위한 설명</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>사진첩 사용을 위한 설명</string>자세한 사용법은 여기 에서 찾아볼 수 있고
간단하게 설명해드리자면
` @objc func showPicker() {
var config = YPImagePickerConfiguration()` // imagePicker 설정 code
let picker = YPImagePicker(configuration: config) picker.didFinishPicking { [unowned picker] items, cancelled in self.pickedIMG = [] if cancelled { picker.dismiss(animated: true, completion: nil) return } // 여러 이미지를 넣어주기 위해 하나씩 넣어주는 반복문 for item in items { switch item { // 이미지만 받기때문에 photo case만 처리 case .photo(let p): // 이미지를 해당하는 이미지 배열에 넣어주는 code self.pickedIMG.append(p.image) default: print("") } } picker.dismiss(animated: true) { // picker뷰 dismiss 할 때 이미지가 들어가 있는 collectionView reloadData() self.imageCV.reloadData() } } // picker뷰 present present(picker, animated: true, completion: nil)
}
``
제가 작성한 간단한 코드입니다.
config에서 커스텀이 되기 때문에 코드를 잘 뜯어보면서 활용하면 좋아 보여 위와 같이 사용했습니다.
그리고 추가적으로 주의해야할 것이 있어보여 적습니다.
기본 이미지피커 라이브러리의 경우에는 생명주기가 다시 호출되지 않지만 (위 사진은 이미지 피커를 호출하기 전에 이미 호출된 function입니다)
YPImagePicker의 경우에는 viewDidDisappear, viewWillAppear, viewDidAppear처럼 뷰의 생명주기가 한 번 다시 호출 되기때문에 주의를 할 필요가 있어보입니다.제 글이 도움이 되셨으면 좋겠습니다😁
- 이 게시글은 5anniversary에 의해 4 years, 7 months 전에 수정됐습니다.
2020-03-28 오후 4:18 #4840
-
-
글쓴이글
- 답변은 로그인 후 가능합니다.