PHImageRequestOptions
- 1、synchronous: 指定請(qǐng)求是否同步執(zhí)行。
- 2、resizeMode: 對(duì)請(qǐng)求的圖像怎樣縮放。有三種選擇:None,不縮放;Fast,盡快地提供接近或稍微大于要求的尺寸;Exact,精準(zhǔn)提供要求的尺寸。
deliveryMode: 圖像質(zhì)量。有三種值:Opportunistic,在速度與質(zhì)量中均衡;HighQualityFormat,不管花費(fèi)多長(zhǎng)時(shí)間,提供高質(zhì)量圖像;FastFormat,以最快速度提供好的質(zhì)量。 - 3、normalizedCropRect: 用于對(duì)原始尺寸的圖像進(jìn)行裁剪,基于比例坐標(biāo)。只在 resizeMode 為 Exact 時(shí)有效。
- 4、resizeMode 默認(rèn)是 None,這也造成了返回圖像尺寸與要求尺寸不符。這點(diǎn)需要注意。要返回一個(gè)指定尺寸的圖像需要避免兩層陷阱:一定要指定 options 參數(shù),resizeMode 不能為 None。
- 5、version 屬性來(lái)做到:.Current 會(huì)遞送包含所有調(diào)整和修改的圖像;.Unadjusted 會(huì)遞送未被施加任何修改的圖像;.Original 會(huì)遞送原始的、最高質(zhì)量的格式的圖像 (例如 RAW 格式的數(shù)據(jù)。而當(dāng)將屬性設(shè)置為 .Unadjusted 時(shí),會(huì)遞送一個(gè) JPEG)。
注意
- 1、deliveryMode:圖像質(zhì)量。有三種值:Opportunistic,在速度與質(zhì)量中均衡;HighQualityFormat,不管花費(fèi)多長(zhǎng)時(shí)間,提供高質(zhì)量圖像;FastFormat,以最快速度提供好的質(zhì)量。這里應(yīng)該是只有在synchronous為false 時(shí)有效。
- 2、synchronous為true時(shí),同步請(qǐng)求,我們?cè)O(shè)置的deliveryMode 會(huì)被忽略,以HighQualityFormat的標(biāo)準(zhǔn)返回圖像。
- 3、synchronous為true時(shí),同步請(qǐng)求,resultHandler只會(huì)執(zhí)行一次。
- 4、synchronous為false時(shí),異步請(qǐng)求,resultHandler是否會(huì)被多次調(diào)用取決于deliveryMode屬性:1、deliveryMode是HighQualityFormat ,resultHandler調(diào)用一次,框架只返回高質(zhì)量圖。2、deliveryMode是FastFormat,resultHandler也只被調(diào)用一次,保證速度盡可能保證圖片質(zhì)量。3、deliveryMode是.Opportunistic Photos 可能會(huì)先提供低質(zhì)量的圖像以供臨時(shí)顯示,隨后會(huì)將指定尺寸的圖像返回。如果指定尺寸的高質(zhì)量的圖像有緩存,那么直接提供高質(zhì)量的圖像。
resultHandler中的info 字典提供了關(guān)于當(dāng)前請(qǐng)求狀態(tài)的信息
- 1、圖像是否必須從 iCloud 請(qǐng)求 (如果你初始化時(shí)將 networkAccessAllowed 設(shè)置成 false,那么就必須重新請(qǐng)求圖像) —— PHImageResultIsInCloudKey 。
- 2、當(dāng)前遞送的 UIImage 是否是最終結(jié)果的低質(zhì)量格式。當(dāng)高質(zhì)量圖像正在下載時(shí),這個(gè)可以讓你給用戶先展示一個(gè)預(yù)覽圖像 —— PHImageResultIsDegradedKey。
- 3、請(qǐng)求 ID (可以便捷的取消請(qǐng)求),以及請(qǐng)求是否已經(jīng)被取消 —— PHImageResultRequestIDKey 和 PHImageCancelledKey。如果沒(méi)有圖像提供給 result handler,字典內(nèi)還會(huì)有一個(gè)錯(cuò)誤信息 —— PHImageErrorKey。