- 父類:NSObject
展示一張Live Photo——這個照片包含了拍攝時刻之前以及之后的動作和聲音。
一、概述
在iOS和tvOS中,你可以使用這個類來從用戶的圖庫中(使用PHAsset和PHImageManager類獲取)引用Live Photo,在其他的位置(如通過社交網絡分享圖片)使用獲得的數據來加載展示Live Photo對象,并將Live Photo加載在PHLivePhotoView上來進行展示。
在iOS和tvOS,以及MacOS中,你可以使用這個類來在一個照片編輯擴展中展示編輯Live Photo的過程。
注意
關于如何將Live Photo和你的應用的用戶體驗整合到一起,請查看iOS Human Interface Guidelines中的Live Photos。
PHLivePhoto類對于Live Photo同UIImage
(NSImage
)對于靜態圖片的作用是一樣的。一個UIImage
或者NSImage
對象并不是一張圖片的加載的數據文件,而是一個可以被展示在視圖中的準備使用的圖片——同樣的,一個PHLivePhoto對象標示的是一個已經準備好使用PHLivePhotoView展示動作和聲音的Live Photo,不是照片庫的一個入口也不是構成一個Live Photo的數據源。(想要Live Photo作為照片庫的元素,請使用PHAsset類。想要使用構成一個Live Photo的數據源,請使用PHAssetResource類。)
提示
想要在網頁上展示Live Photo的內容,請使用LivePhotosKit JS框架。
二、內容
1. 檢查一個Live Photo
@property(readonly, nonatomic) CGSize size;
Live Photo的大小。
2. 從數據文件中加載一個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 - 一個URL的數組,這個數組包含了多個構成一個Live Photo的資源的URL,獲得URL請使用PHAssetResource類。
- image UIImage - Live Photo的全部內容被加載并顯示之前的替代圖片。
- targetSize CGSize - 想要的Live Photo的大小。傳入CGSizeZero則為Live Photo的原始大小。
- contentMode PHImageContentMode - 如何將圖像與所請求的大小的縱橫比相匹配。詳細內容請查看PHImageContentMode。
- resultHandler block - 圖片被加載完成的回調。
- livePhoto PHLivePhoto - 請求的Live Photo。
- info NSDictionary - 關于請求狀態的信息。具體內容請查看下面
Result Handler Info Dictionary Keys
。
從給定的源文件中異步加載一個Live Photo。將會返回一個用來標示請求的唯一的ID。
使用這個方法從之前在照片庫中獲取的數據文件中加載用來展示的Live Photo對象。例如,社交網絡應用可以使用PHAssetResource來獲取一個用戶的照片庫中構成一個Live Photo的數據文件,并將它們上傳到服務器。然后,在另一個用戶的設備中,這個應用下載這些數據文件并且使用這個方法來重新創建一個Live Photo對象來使用PHLivePhotoView類進行展示。
注意
想要獲取一個表示一個在用戶照片庫中的Live Photo資源的PHLivePhoto對象,使用PHAsset類定位資源并用PHImageManager類來獲取資源的Live Photo數據來進行展示。
想要向照片庫中引入一個Live Photo,請使用PHAssetCreationRequest類。
這個方法是異步的。Photos在后臺線程中加載、驗證以及準備數據,然后調用你的resultHandler
回調并傳入一個已經準備好進行展示的Live Photo對象。同PHImageManager中類似的方法一樣,Photos可以不止一次的調用你的resultHandler
回調——第一次,提供一個低質量的Live Photo對象(只包含方法的image
參數中的靜態圖像),然后之后會返回一個全部的動作和聲音內容的Live Photo。如果在你的resultHandler
回調中的info
字典中PHLivePhotoInfoIsDegradedKey
對應的值為YES
,Photos還將會再次調用你的resultHandler
回調。
這個方法可以從一個之前獲取的Live Photo資源中的相同的文件集合加載一個PHLivePhoto對象。當你使用這個方法,Photos會驗證這些文件以及他們的源數據是否可以作為一個Live Photo被加載。如果Photos不能從給定的文件中加載一個Live Photo,你的resultHandler
回調中的result
參數則為nil
,并且info
字典將包含一個NSError
對象來描述錯誤。
Result Handler Info Dictionary Keys
- NSString *const PHLivePhotoInfoErrorKey;
加載請求的照片時發生錯誤。值為一個NSError
對象。 - NSString *const PHLivePhotoInfoIsDegradedKey;
標示當前返回的livePhoto
是否是請求的照片的臨時低質量的結果。如果為YES
,回調在之后還會調用來返回完整的Live Photo的數據。 - NSString *const PHLivePhotoInfoCancelledKey;
加載請求的照片是否被取消。
+ (void)cancelLivePhotoRequestWithRequestID:(PHLivePhotoRequestID)requestID;
取消一個異步請求。
當你使用上面的方法異步請求從源文件中加載一個Live Photo,這個方法會返回這個請求的一個數值標識。想要在這個請求完成前取消這個請求,調用此方法并傳入這個請求的數值標識。