[Day 56] PHPickerConfiguration가 뭘까?
Apple 공식 문서를 보고 PHPickerConfiguration을 사용해보자!
📷 iOS에서 사진 선택 기능은 어떻게 구현해?
iOS 앱에서 사진 선택 기능을 구현하다 보면
자연스럽게 PHPickerViewController를 만나게 된다.
그런데 막상 사용하려고 보면
항상 먼저 등장하는 객체가 있다.
바로 PHPickerConfiguration.
이번 TIL에서는
Apple 공식 문서를 기준으로
- PHPickerConfiguration가 무엇인지
- 왜 필요한지
- 어떻게 사용하는지
- 간단한 예시 코드와 응용
을 정리해보려고 한다.
📖 공식 문서에서 말하는 PHPickerConfiguration
Apple 공식 문서에서는 PHPickerConfiguration를 다음과 같이 설명한다.
An object that specifies the configuration of a photo picker.
🔗 Apple Developer Documentation
https://developer.apple.com/documentation/photokit/phpickerconfiguration
즉, PHPickerConfiguration은 사진 선택 화면을 어떻게 구성할지 정의하는 설정 객체다.
사진을 “고르는 화면”을 띄우기 전에
그 화면의 규칙과 조건을 미리 정해두는 역할을 한다.
🤔 PHPickerConfiguration는 왜 필요할까?
PHPickerViewController는
단순히 사진 선택 UI를 보여주는 역할만 한다.
그에 반해 PHPickerConfiguration은 다음을 담당한다.
- 몇 장의 사진을 선택할 수 있는지
- 사진만 선택할지, 비디오도 포함할지
- 어떤 품질의 리소스를 가져올지
즉, “사진 선택 화면을 띄우기 전에, 어떤 방식으로 선택할지 약속하는 객체”
라고 이해하면 된다.
🧩 PHPickerConfiguration 기본 사용 방법
1️⃣ Configuration 생성
1
var configuration = PHPickerConfiguration()
기본 생성 시에는 사진과 비디오 모두 선택 가능하고, 선택 개수 제한도 없는 상태다.
2️⃣ selectionLimit — 선택 가능한 개수 설정
1
configuration.selectionLimit = 1
- 1 → 한 장만 선택
- 0 → 선택 개수 제한 없음
⚠️ 0은 “선택 불가”가 아니라 무제한이다.
3️⃣ filter — 선택 가능한 미디어 타입
1
configuration.filter = .images
주요 옵션은 다음과 같다.
.images: 사진만 선택.videos: 비디오만 선택.any(of: [.images, .videos]): 모두 선택 가능
4️⃣ preferredAssetRepresentationMode — 리소스 표현 방식
1
configuration.preferredAssetRepresentationMode = .current
이 옵션은 선택한 사진/비디오를 어떤 형태로 가져올지를 결정한다.
.automatic: 시스템이 자동 선택.current: 가능한 한 원본 유지.compatible: 호환성 우선
원본 품질이 중요하면 current, 안정적인 처리가 중요하면 compatible를 고려한다.
🧑💻 PHPickerViewController와 함께 사용하기
설정을 마친 뒤에는 PHPickerViewController에 전달해 사용한다.
1
2
3
let picker = PHPickerViewController(configuration: configuration)
picker.delegate = self
present(picker, animated: true)
사진 선택이 끝나면 delegate 메서드를 통해 결과를 전달받는다.
1
2
3
func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
picker.dismiss(animated: true)
}
이 시점에서 PHPickerResult를 사용해 실제 이미지 데이터를 처리하게 된다.
🐾 오늘의 마무리: 춘식이의 개발 일기
PHPickerConfiguration의 핵심!!
- PHPickerConfiguration은 사진 선택의 규칙을 정의하는 객체
- PHPickerViewController는 그 규칙을 바탕으로 UI를 보여주는 역할
- 설정을 분리함으로써 사진 선택 로직이 더 명확해진다
오늘도 오류 내며 자란 춘식이였습니다. 🐾
더 열심히 해서 좋은 iOS Developer가 되자!
혹시 이 글을 우연히 보게 되신 분이 있다면, 더 잘 만들 수 있는 팁이나 피드백은 언제든 환영입니다 :)