PHCachingImageManager

對(duì)Photos的圖片或視頻資源提供了加載或生成預(yù)覽縮略圖和全尺寸圖片的方法,針對(duì)預(yù)處理巨量的資源進(jìn)行了優(yōu)化。

一、概述

當(dāng)你使用大量的資源時(shí),一個(gè)緩存圖片管理器可以在后臺(tái)準(zhǔn)備資源圖片,為了能使你在稍后的事件請(qǐng)求單個(gè)資源時(shí)減少延遲。例如,當(dāng)你想要使用照片或者視頻資源的縮略圖填充一個(gè)集合視圖或者類似的頁(yè)面時(shí)可以使用緩存圖片管理器。

PHCachingImageManager類的大部分功能都是它的父類——PHImageManager定義的.

如何使用緩存圖片管理器:

  1. 創(chuàng)建一個(gè)PHCachingImageManager實(shí)例。(這一步取代了使用PHImageManager單例。)
  2. 使用PHAsset類方法來加載你需要的資源。
  3. 為這些資源準(zhǔn)備圖像,調(diào)用- (void)startCachingImagesForAssets:(NSArray<PHAsset *> *)assets targetSize:(CGSize)targetSize contentMode:(PHImageContentMode)contentMode options:(PHImageRequestOptions *)options;方法,并傳入你在之后單獨(dú)獲取某一個(gè)資源時(shí)要用的targetSize,contentModeoptions。
  4. 當(dāng)你需要單獨(dú)獲取某一個(gè)資源的圖像時(shí),調(diào)用- (PHImageRequestID)requestImageForAsset:(PHAsset *)asset targetSize:(CGSize)targetSize contentMode:(PHImageContentMode)contentMode options:(PHImageRequestOptions *)options resultHandler:(void (^)(UIImage *result, NSDictionary *info))resultHandler;方法,并且傳入你之前預(yù)加載時(shí)使用的同樣的參數(shù)。
    如果你請(qǐng)求的圖像已經(jīng)準(zhǔn)備好了,PHCachingImageManager會(huì)立刻返回這個(gè)圖像。否則,Photos會(huì)準(zhǔn)備這個(gè)圖像并緩存以備下次使用。

二、內(nèi)容

1. 準(zhǔn)備圖像

- (void)startCachingImagesForAssets:(NSArray<PHAsset *> *)assets targetSize:(CGSize)targetSize contentMode:(PHImageContentMode)contentMode options:(nullable PHImageRequestOptions *)options;

為以后使用的資源準(zhǔn)備圖像。
當(dāng)你調(diào)用這個(gè)方法,Photos會(huì)開始在后臺(tái)獲取圖像數(shù)據(jù)并生成縮略圖。在任何時(shí)間,你可以使用- (PHImageRequestID)requestImageForAsset:(PHAsset *)asset targetSize:(CGSize)targetSize contentMode:(PHImageContentMode)contentMode options:(PHImageRequestOptions *)options resultHandler:(void (^)(UIImage *result, NSDictionary *info))resultHandler;方法來請(qǐng)求已經(jīng)緩存的單個(gè)圖片。如果Photos已經(jīng)完成了緩存一組圖片,這個(gè)方法會(huì)立刻提供已經(jīng)緩存的圖像。
Photos使用這個(gè)方法中你提供的targetSize、contentModeoptions來緩存圖片。如果你在之后請(qǐng)求圖片時(shí),例如,使用不同的targetSize調(diào)用這個(gè)方法,Photos都不會(huì)使用已經(jīng)緩存的圖片,而是獲取或生成一個(gè)新的圖片。

- (void)stopCachingImagesForAssets:(NSArray<PHAsset *> *)assets targetSize:(CGSize)targetSize contentMode:(PHImageContentMode)contentMode options:(nullable PHImageRequestOptions *)options;

取消緩存給定的資源的圖片。
這個(gè)方法通過給定的options取消對(duì)給定的資源的圖片緩存。當(dāng)不再需要這些圖片緩存的時(shí)候使用這個(gè)方法來取消緩存(有可能正在緩存過程中)。例如,如果你為使用縮略圖填充一個(gè)集合視圖而準(zhǔn)備圖像,這個(gè)時(shí)候用戶選擇了一個(gè)不同的縮略圖尺寸,調(diào)用這個(gè)方法來取消之前生成的縮略圖。

- (void)stopCachingImagesForAllAssets;

取消所有正在進(jìn)行過程中的圖像緩存。

2. 設(shè)置緩存策略

@property (nonatomic, assign) BOOL allowsCachingHighQualityImages;

是否緩存高質(zhì)量圖片。
如果設(shè)置為YES,圖像管理器將會(huì)準(zhǔn)備高質(zhì)量的圖像。這個(gè)選項(xiàng)將在高性能成本下提供更好的圖像。
想要在準(zhǔn)備大量的圖像的時(shí)候有更快更好的性能——比如說用戶快速的滑動(dòng)縮略圖集合視圖的時(shí)候——設(shè)置這個(gè)屬性為NO。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 父類:NSObject 提供獲取或生成預(yù)覽縮略圖和全尺寸圖片,或者視頻數(shù)據(jù)的方法。 一、概述 使用這些方法來獲取全...
    Shmily落墨閱讀 10,689評(píng)論 5 6
  • 一、 PhotoKit的變量: PHAdjustmentData: When a user edits an as...
    漓汐Arthur閱讀 1,886評(píng)論 1 3
  • 本文轉(zhuǎn)載自Kayo Lee發(fā)表的文章,本文鏈接:http://kayosite.com/ios-developme...
    JackyHeWei閱讀 10,738評(píng)論 10 10
  • 1. Model PHAsset 、PHAssetCollection、PHCollectionList 是Pho...
    RY_zheng閱讀 15,488評(píng)論 16 65
  • 成苒說的“一會(huì)兒”卻是在兩天以后。 太久沒住人的房間要收拾收拾。還要把伴手禮送給親戚們,在各家逗留了或長(zhǎng)或短的時(shí)間...
    讀云軒札記閱讀 405評(píng)論 0 0

友情鏈接更多精彩內(nèi)容