안녕하세요. 매번 질문만 올려서 뭔가 죄송하네요…
다름이 아니라 edwith iOS 부스트 코스를 수강중입니다. 프로젝트 중 하나가 PhotoKit을 사용한 앱을 만드는 것인데 처음부터 어디로 파고 들지 아예 생각을 못하겠어서 질문드립니다. .
일단 뷰1은 요렇게 생겼습니다.
제가 생각한 방법은
일단 UICollectionView를 하나 만들고 그 안에 UIImageView, UILabel 두 개가 들어간 커스템 셀을 만듭니다.
여기까지는 괜찮습니다.
근데 이 뷰의 요구사항이
" 1.애플리케이션 처음 진입 시 사진 라이브러리 접근권한이 없다면 사진 라이브러리에 접근 허용 여부를 묻습니다.
2.수락 시 디바이스의 사진에 접근하여 기본 앨범(카메라롤, 즐겨찾기, 셀피 등)과 사용자 커스텀 앨범을 가져옵니다.
3.비수락 시 컬렉션뷰에 사진이 나타나지 않으며, 오류로 인한 애플리케이션 강제종료가 되지도 않습니다."
이렇게 있습니다.
그 중에 2번이 완전히 감이 없네요… 일단 궁금한 것이 기본앨범 + 사용자 커스텀 앨범과 썸네일을 가져오는 부분입니다.
smartAlbums: PHFetchResult"PHAssetCollection" (기본앨범)
userCollections: PHFetchResult"PHCollection"(커스텀앨범)
"는 꺾쇠 입니다. <>가 이상하게 입력이 안되네요
일단 이 두 녀석으로 뭔가를 해야될것 같은 feel은 있습니다.
일단 requestCollection( )이라는 함수를 하나 만듭니다.
그 안에다가
func requestCollection( ) {
let allPhotosOptions = PHFetchOptions()
allPhotosOptions.sortDescriptors = [NSSortDescriptor(key: “creationDate”, ascending: true)]
smartAlbums = PHAssetCollection.fetchAssetCollections(with: .smartAlbum, subtype: .albumRegular, options: nil)
userCollections = PHCollectionList.fetchTopLevelUserCollections(with: nil)
PHPhotoLibrary.shared().register(self)
} 이렇게 만들어 줍니다.
이 코드도 애플 개발자 사이트에 있는 예시보고 쓴겁니다. ㅠㅠ
PHFetchResult에 각 앨범의 sort결과를 저장해주는 일은 하는 것 같네요.
그리고 viewDidLoad( )가 호출되서 photoAurhorizationsStatus가 authorized되면 저 requestCollection이라는 놈을 호출해서 cell에 뿌려줄 일을 준비 합니다.
문제는
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
이 함수 안에서 어떻게 앨범과 이미지를 불러드릴지 모르겠네요.
제일 궁금한 것이 저 함수안에서 어떻게 위의 smartAlbums와 userCollections 변수를 셀안에 넣어야할까요? ㅠㅠ 아직 썸네일은 생각도 못했습니다.
PhotoKit이 예상밖으로 매우 복잡하네요 애플 문서봐도 잘 이해안가고 부스트캠프 동영상 돌려봐도 영… 이해가 안갑니다… 구글링해도…ㅠㅠㅠ
혹시 PhotoKit관련해서 잘 아시는 분은 댓글부탁드립니다! 감사합니다!