본문 바로가기

iOS

[iOS] Photos - Asset Loading

Asset Loading

이 클래스를 사용하여 이미지, 비디오, 라이브 포토 콘텐츠를 요청할 수 있다.

 

 

PHImageManager

An object that facilitates retrieving or generating preview thumbnails and asset data.

: 미리보기 썸네일 및 에셋과 전체 크기의 이미지 또는 비디오 데이터를 검색하거나 생성하는 방법을 제공

class PHImageManager : NSObject
func requestImage(for asset: PHAsset, 
       targetSize: CGSize, 
      contentMode: PHImageContentMode, 
          options: PHImageRequestOptions?, 
    resultHandler: @escaping (UIImage?, [AnyHashable : Any]?) -> Void) -> PHImageRequestID

requestImage(for:targetSize:contentMode:options:resultHandler:) : 에셋으로부터 실질적인 이미지를 요청

이 메소드는 기본적으로 비동기적으로 실행됨  ➡️ 이미지를 UI에 나타내는 작업은 메인 스레드에서 동작하도록 해야 함

비동기 요청에서, Photos는 result handler block을 두 번 이상 호출할 수도 있다.

Photos는 처음에 고화질의 이미지를 준비하는 동안 저화질의 이미지를 나타내기 위해 block을 호출한다. 

고화질 이미지가 준비되면, Photos는 resultHandler를 다시 호출해서 이미지를 제공한다.

만약 고화질의 이미지가 캐시에 이미 있는 경우, handler를 한 번만 호출함!

 

 

PHCachingImageManager

An object that facilitates retrieving or generating preview thumbnails, optimized for batch preloading large numbers of assets.

: 많은 에셋을 일괄적으로 미리 로딩하기 위해 최적화된 에셋과 관련 썸네일, 전체 크기의 이미지 / 비디오 데이터를 검색하거나 생성하는 방법을 제공

class PHCachingImageManager : PHImageManager

많은 asset을 가지고 작업을 할 때, Caching Image Manager는 에셋 이미지를 백그라운드에서 준비할 수 있다.

(개별 이미지를 요청할 때, 지연되는 것을 방지하기 위해)

사진이나 비디오 에셋의 썸네일을 사용해 collectionView와 같은 UI를 채울 때, 이를 사용하면 좋 !

PHCachingImageManager 클래스의 주요 기능은, 대부분 슈퍼클래스인 PHImageManager에 의해 정의된다.

 

 

PHImageRequestOptions

 

PHVideoRequestOptions

 

PHLivePhotoRequestOptions

 

PHLivePhoto