- 父類:NSObject
展示一張Live Photo——這個(gè)照片包含了拍攝時(shí)刻之前以及之后的動(dòng)作和聲音。
一衩椒、概述
在iOS和tvOS中,你可以使用這個(gè)類來從用戶的圖庫中(使用PHAsset和PHImageManager類獲认肌)引用Live Photo毛萌,在其他的位置(如通過社交網(wǎng)絡(luò)分享圖片)使用獲得的數(shù)據(jù)來加載展示Live Photo對(duì)象,并將Live Photo加載在PHLivePhotoView上來進(jìn)行展示喝滞。
在iOS和tvOS阁将,以及MacOS中,你可以使用這個(gè)類來在一個(gè)照片編輯擴(kuò)展中展示編輯Live Photo的過程右遭。
注意
關(guān)于如何將Live Photo和你的應(yīng)用的用戶體驗(yàn)整合到一起做盅,請(qǐng)查看iOS Human Interface Guidelines中的Live Photos。
PHLivePhoto類對(duì)于Live Photo同UIImage
(NSImage
)對(duì)于靜態(tài)圖片的作用是一樣的窘哈。一個(gè)UIImage
或者NSImage
對(duì)象并不是一張圖片的加載的數(shù)據(jù)文件吹榴,而是一個(gè)可以被展示在視圖中的準(zhǔn)備使用的圖片——同樣的,一個(gè)PHLivePhoto對(duì)象標(biāo)示的是一個(gè)已經(jīng)準(zhǔn)備好使用PHLivePhotoView展示動(dòng)作和聲音的Live Photo滚婉,不是照片庫的一個(gè)入口也不是構(gòu)成一個(gè)Live Photo的數(shù)據(jù)源图筹。(想要Live Photo作為照片庫的元素,請(qǐng)使用PHAsset類让腹。想要使用構(gòu)成一個(gè)Live Photo的數(shù)據(jù)源远剩,請(qǐng)使用PHAssetResource類。)
提示
想要在網(wǎng)頁上展示Live Photo的內(nèi)容骇窍,請(qǐng)使用LivePhotosKit JS框架瓜晤。
二、內(nèi)容
1. 檢查一個(gè)Live Photo
@property(readonly, nonatomic) CGSize size;
Live Photo的大小腹纳。
2. 從數(shù)據(jù)文件中加載一個(gè)Live Photo
+ (PHLivePhotoRequestID)requestLivePhotoWithResourceFileURLs:(NSArray<NSURL *> *)fileURLs placeholderImage:(UIImage *)image targetSize:(CGSize)targetSize contentMode:(PHImageContentMode)contentMode resultHandler:(void (^)(PHLivePhoto *livePhoto, NSDictionary *info))resultHandler;
- fileURLs NSArray - 一個(gè)URL的數(shù)組痢掠,這個(gè)數(shù)組包含了多個(gè)構(gòu)成一個(gè)Live Photo的資源的URL,獲得URL請(qǐng)使用PHAssetResource類嘲恍。
- image UIImage - Live Photo的全部?jī)?nèi)容被加載并顯示之前的替代圖片足画。
- targetSize CGSize - 想要的Live Photo的大小。傳入CGSizeZero則為L(zhǎng)ive Photo的原始大小蛔钙。
- contentMode PHImageContentMode - 如何將圖像與所請(qǐng)求的大小的縱橫比相匹配锌云。詳細(xì)內(nèi)容請(qǐng)查看PHImageContentMode荠医。
- resultHandler block - 圖片被加載完成的回調(diào)吁脱。
- livePhoto PHLivePhoto - 請(qǐng)求的Live Photo桑涎。
- info NSDictionary - 關(guān)于請(qǐng)求狀態(tài)的信息。具體內(nèi)容請(qǐng)查看下面
Result Handler Info Dictionary Keys
兼贡。
從給定的源文件中異步加載一個(gè)Live Photo攻冷。將會(huì)返回一個(gè)用來標(biāo)示請(qǐng)求的唯一的ID。
使用這個(gè)方法從之前在照片庫中獲取的數(shù)據(jù)文件中加載用來展示的Live Photo對(duì)象遍希。例如等曼,社交網(wǎng)絡(luò)應(yīng)用可以使用PHAssetResource來獲取一個(gè)用戶的照片庫中構(gòu)成一個(gè)Live Photo的數(shù)據(jù)文件,并將它們上傳到服務(wù)器凿蒜。然后禁谦,在另一個(gè)用戶的設(shè)備中,這個(gè)應(yīng)用下載這些數(shù)據(jù)文件并且使用這個(gè)方法來重新創(chuàng)建一個(gè)Live Photo對(duì)象來使用PHLivePhotoView類進(jìn)行展示废封。
注意
想要獲取一個(gè)表示一個(gè)在用戶照片庫中的Live Photo資源的PHLivePhoto對(duì)象州泊,使用PHAsset類定位資源并用PHImageManager類來獲取資源的Live Photo數(shù)據(jù)來進(jìn)行展示。
想要向照片庫中引入一個(gè)Live Photo漂洋,請(qǐng)使用PHAssetCreationRequest類遥皂。
這個(gè)方法是異步的。Photos在后臺(tái)線程中加載刽漂、驗(yàn)證以及準(zhǔn)備數(shù)據(jù)演训,然后調(diào)用你的resultHandler
回調(diào)并傳入一個(gè)已經(jīng)準(zhǔn)備好進(jìn)行展示的Live Photo對(duì)象。同PHImageManager中類似的方法一樣贝咙,Photos可以不止一次的調(diào)用你的resultHandler
回調(diào)——第一次样悟,提供一個(gè)低質(zhì)量的Live Photo對(duì)象(只包含方法的image
參數(shù)中的靜態(tài)圖像),然后之后會(huì)返回一個(gè)全部的動(dòng)作和聲音內(nèi)容的Live Photo庭猩。如果在你的resultHandler
回調(diào)中的info
字典中PHLivePhotoInfoIsDegradedKey
對(duì)應(yīng)的值為YES
乌奇,Photos還將會(huì)再次調(diào)用你的resultHandler
回調(diào)。
這個(gè)方法可以從一個(gè)之前獲取的Live Photo資源中的相同的文件集合加載一個(gè)PHLivePhoto對(duì)象眯娱。當(dāng)你使用這個(gè)方法礁苗,Photos會(huì)驗(yàn)證這些文件以及他們的源數(shù)據(jù)是否可以作為一個(gè)Live Photo被加載。如果Photos不能從給定的文件中加載一個(gè)Live Photo徙缴,你的resultHandler
回調(diào)中的result
參數(shù)則為nil
试伙,并且info
字典將包含一個(gè)NSError
對(duì)象來描述錯(cuò)誤。
Result Handler Info Dictionary Keys
- NSString *const PHLivePhotoInfoErrorKey;
加載請(qǐng)求的照片時(shí)發(fā)生錯(cuò)誤于样。值為一個(gè)NSError
對(duì)象疏叨。 - NSString *const PHLivePhotoInfoIsDegradedKey;
標(biāo)示當(dāng)前返回的livePhoto
是否是請(qǐng)求的照片的臨時(shí)低質(zhì)量的結(jié)果。如果為YES
穿剖,回調(diào)在之后還會(huì)調(diào)用來返回完整的Live Photo的數(shù)據(jù)蚤蔓。 - NSString *const PHLivePhotoInfoCancelledKey;
加載請(qǐng)求的照片是否被取消。
+ (void)cancelLivePhotoRequestWithRequestID:(PHLivePhotoRequestID)requestID;
取消一個(gè)異步請(qǐng)求糊余。
當(dāng)你使用上面的方法異步請(qǐng)求從源文件中加載一個(gè)Live Photo秀又,這個(gè)方法會(huì)返回這個(gè)請(qǐng)求的一個(gè)數(shù)值標(biāo)識(shí)单寂。想要在這個(gè)請(qǐng)求完成前取消這個(gè)請(qǐng)求,調(diào)用此方法并傳入這個(gè)請(qǐng)求的數(shù)值標(biāo)識(shí)吐辙。