위 글을 먼저 읽고오길 바람
https://jmin-developer.tistory.com/46
[iOS] PhotoKit (1/3) - 사진을 받아오기 위해 알아야 하는것
틀린내용이 있을수 있습니다 혹시 틀린내용이 있다면 알려주시면 감사하겠습니다:) 오늘은 포토킷에 대해서 알아볼거임 글 올리는 순서가 뒤죽박죽인것같은데 그냥 올리고싶은거 올렬려함 지
jmin-developer.tistory.com
https://jmin-developer.tistory.com/48
[iOS] PhotoKit (2/3) - 사진앱 변경 요청하기 및 변경사항 실시간 동기화
PhotoKit은 CRUD가 가능함 https://jmin-developer.tistory.com/46 [iOS] PhotoKit (1/3) - 사진을 받아오기 위해 알아야 하는것 틀린내용이 있을수 있습니다 혹시 틀린내용이 있다면 알려주시면 감사하겠습니다:)..
jmin-developer.tistory.com
블로그에서는 사진을 가져와서 컬렉션뷰에 뿌려주는걸 한번 해보겠음
참고로 깃허브에는 사진삭제, 추가, 업데이트, 실시간 반영(?) 기능도 구현해볼테니 한번 봐도 좋고

일단 권한요청부터 함

PhotoKit을 쓸려면 import Photos 해줘야함
권한요청
let photoAuthorizationStatus = PHPhotoLibrary.authorizationStatus()
switch photoAuthorizationStatus {
case .authorized:
print("인증됨")
case .notDetermined:
PHPhotoLibrary.requestAuthorization { [weak self] status in
switch status {
case .authorized:
print("인증됨")
default:
break
}
}
default:
return
}
권한허용상태를 확인한다음 권한이 확인이 안될경우 권한요청을 하는 코드임
var assets: PHFetchResult<PHAsset>?
일단 가져온 사진들을 담을 배열을 하나 만듬
사진이든 앨범이든 fetch를 하게되면 PHFetchResult 타입으로 나오게 됨
이게 제네릭이라 저 제네릭 타입에 맞는 객체를 fetch 해야함
그니까 저기에는 PHAssetCollection같은걸 fetch하면 안됨
private func fetchAllAssets() {
let fetchOptions = PHFetchOptions()
fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
assets = PHAsset.fetchAssets(with: fetchOptions)
}
fetchOptions를 만들어서 가져온 사진들을 날짜순으로 정렬함
그리고 PHAsset의 fetchAssets 메서드를 통해서 전체사진을 가져옴
여기서 PHAsset은 사진이 아닌 메타정보를 가져오는거임
guard let assets = assets else { return UICollectionViewCell() }
PHAsset 하나 가져오기
let asset = assets[indexPath.item]
// targetSize
targetSize = CGSize(width: 360, height: 360)
// requestOptions
let requestOptions = PHImageRequestOptions()
// 이미지 품질
requestOptions.deliveryMode = .highQualityFormat
// 이미지 리사이즈
requestOptions.resizeMode = .none
PHImageManager.default().requestImage(for: asset, targetSize: targetSize,
contentMode: .aspectFill,
options: requestOptions) { image, _ in
cell.ImageView.image = image
}
이렇게 PHAsset객체 하나를 가져와서 requestImage로 이미지를 받아온다음에 셀에 뿌려주면 끝임

-끝!-
소스코드 보러가기 - 사진삭제, 추가, 업데이트, 실시간반영 함수 구현
https://github.com/jmindeveloper/PhotoKitTutorial
GitHub - jmindeveloper/PhotoKitTutorial: https://jmin-developer.tistory.com/46
https://jmin-developer.tistory.com/46. Contribute to jmindeveloper/PhotoKitTutorial development by creating an account on GitHub.
github.com