Olive Study Room
[iOS] Photos Framework (1) 개념 본문
PhotoKit이란?
- iCloud Photo와 Live Photo를 포함하여 Photos 앱에서 관리하는 이미지와 비디오 asset를 사용한다.
- iOS와 macOS에서 PhotoKit은 Photos 앱을 위해 사진 편집 확장 기능을 지원하는 클래스를 제공하고, 앱을 통해 다뤄지는 사진과 비디오에 직접 접근을 제공한다.
- Photokit을 통해 display를 위한 asset을 fetch하고 cache할 수 있고, 이미지나 비디오 콘텐츠를 편집하고, 앨범과 순간들, 공유된 앨범과 같은 asset collection들을 관리할 수 있다.
-> iOS의 기본 사진 앱이 관리하는 사진과 비디오와 같은 aseets에 직접 접근하여, 데이터를 가져오거나 편집, 삭제 등을 할 수 있게 해주는 프레임워크(프레임 워크가 맞겠..지?)
-> asset과 asset collection들을 관리한다.
관련 클래스들
Class PHObject : NSObject
Photos model객체(asset들과 collections들)의 추상 최상위 클래스
직접적으로 클래스 인스턴스를 생성하거나 사용할 수 없다.
-> 구체적인 하위클래스(PHAsset, PHAssetCollection, PHCollectionList, and PHObjectPlaceholder.)의 인스턴스로 작업해야한다.
PHOobject 클래스는 localIdentifier 프로퍼티로 isEqual(_:) 및 해시 메서드를 구현하기 때문에, 이 방법을 통해 asset과 collection객체를 추적할 수 있다.
Class PHAsset : PHObject
Photos library내 이미지와 비디오, 또는 Live Photo의 표현
- asset을 가져와 작업을 시작한다. Fetching Assets 에 나열된 클래스 메소드를 사용하여 보거나 편집하기를 원하는 asset을 나타내는 하나 이상의 PHAsset를 가져온다.
- Asset은 메타데이터(데이터를 설명하는 데이터)만 갖는다. 특정 asset의 기본 이미지나 비디오 데이터는 local디바이스에 저장되지 않을 수 있다. 그러나 이 데이터를 어떻게 사용할 것인지에 따라 그것을 전부 다운로드할 필요가 없을 것이다. collection view의 썸네일 이미지에 채우고 싶다면 Photos framework을 통해 각 asset을 썸네일로 다운도드, 생성 및 캐시할 수 있다.
- Asset 객체는 변경할 수 없다. asset의 메타데이터를 편집하기 위해 (가장 좋아하는 사진으로 마킹하기와 같은), PHAssetChangeRequest 객체를 photo library change block내에 생성해야한다. 포토 라이브러리를 업데이트하기 위한 변경 요청이나 블록 변경을 사용하기 위한 추가 정보는 PHPhotoLibrary.참고.
-> 사진 이미지 각각을 나타내고, 메타데이터만 갖고 있어 직접 변경은 불가, PHAssetChangeRequest를 통해 따로 변경 요청을 해줘야한다.
Class PHCollection: PHObject
photos asset collection과 collection List를 위한 추상 최상위클래스
직접 이 클래스의 인스턴스로 생성하거나 작업하지 말아야 한다.
// 학습 중
Class PHAssetCollection : PHCollection
순간과 사용자 생성 앨범이나 스마트 앨범과 같은 Photo asset의 그룹핑
Photo framework에서, collection객체(asset collection을 포함하여)는 직접 멤버 객체를 참조하지 않고 collection 객체를 직접 참조하는 다른 객체도 없다. asset collection의 멤버를 받아오기 위해, fetchAsset와 같은 PHAsset클래스 메소드와 함께 해당 멤버를 가져와야한다. asset collection을 찾기 위한 추가 정보는 Fetching Asset Collections 참고.
중요 :
- 포토 라이브러리에 접근하거나 수정하는 것은 유저에게 명시적 허가를 요구한다. 처음 Fetching Asset Collections에 적혀있는 메소드들 중 하나를 호출하면 자동적으로 photos는 사용자들이 허가하도록 한다. (대신에 원하는 시간에 사용자에게 요구하는 PHPhotoLibrary requestAuthorization(_:)메소드를 사용할 수 있다.)
- 당신 앱의 Info.plist파일은 유저에게 왜 이 앱이 photos에 접근을 요청하는지 설명하는 NSPhotoLibraryUsageDescription키 값을 꼭 제공해야한다. 이 키값이 명시되어있지 않다면 iOS 10.0이상과 연결되어있는 앱은 crash가 날 것이다.
- asset들과 collection list처럼 asset collection들은 수정할 수 없다. asset collection을 만들고 이름을 바꾸거나, asset collection내에 멤버를 추가하고 삭제하기 위해 photo library change block내에 PHAssetCollectionChangeRequest 객체를 만든다. 포토 라이브러리를 업데이트하기 위해 change request와 change block을 사용하는 추가 정보는 PHPhotoLibrary를 참고.
'Coding > iOS' 카테고리의 다른 글
[Swift] RawRepresentable (0) | 2021.05.01 |
---|---|
[iOS] UISearchBar - 검색기능 구현하기 (1) 필수항목 (0) | 2021.04.30 |
[Swift] GCD? (Dispatch Queue & OperationQueue) (1) | 2021.04.06 |
[Swift] Json 다루기 (0) | 2021.03.12 |
[iOS] UITableView의 생성, cell 삭제 (0) | 2021.03.10 |