PHLivePhoto
- 父类: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,这个方法会返回这个请求的一个数值标识。想要在这个请求完成前取消这个请求,调用此方法并传入这个请求的数值标识。