Photos框架
使用照片应用管理的图片和视频资源,包括来自iCloud照片库和实时照片的图片和视频资源。 以异步方式获取和缓存全尺寸资源或缩略图,修改内容,以及将修订版同步到多个设备。
概述
在iOS和macOS中,Photos框架提供了支持为照片应用程序构建照片编辑扩展程序的类。 在iOS和tvOS中,Photos框架还可以直接访问由照片应用管理的照片和视频资源,包括iCloud照片库。 使用此框架可以检索内容以进行显示和播放,编辑其图像或视频内容,或使用资产集合(如专辑,时刻和iCloud共享相册)。
特征 & 概念
在iOS和tvOS中,Photos框架包含许多直接与用户的照片库一起工作的功能。
-
获取对象和请求更改 Photos框架模型类(
PHAsset
,PHAssetCollection
和PHCollectionList
)的实例表示用户在照片应用中使用的项:资产(图片,视频和实时照片),资产集合(如相册或时刻)和 集合列表(例如专辑文件夹或时刻集群)。 这些对象是只读的,不可变的,并且只包含元数据。 通过获取您感兴趣的资源和集合,然后使用这些对象来获取需要处理的数据。 要进行更改,请创建更改请求对象,并将其显式提交到共享的PHPhotoLibrary对象。 此架构可让您轻松,安全,高效地使用来自多个主题或多个应用和应用扩展的相同资源。 -
观察变化 使用共享的
PHPhotoLibrary
对象为您获取的资产和集合注册变化处理程序。 当其他应用或设备更改资源的内容或元数据或集合中的资源列表时,照片会告诉您的应用。 PHChange对象提供有关每个更改之前和之后的对象状态的信息,以便于更新集合视图或类似接口。 -
支持照片app的功能 使用
PHCollectionList
类来查找照片应用程序中与“时刻”层次结构相对应的资产。 使用PHAsset
类来识别突发照片,全景照片和高帧率视频。 启用iCloud照片库后,Photos框架中的资源和集合反映同一iCloud帐户中所有设备上的可用内容。 -
资产和缩略图加载和缓存 使用
PHImageManager
类请求指定大小的资产的图像,或使用AV Foundation对象处理视频资产。 Photos框架根据你的指定自动下载或生成图像,缓存它们以便快速重用。 为了提高性能,例如,在使用缩略图填充集合视图时,PHCachingImageManager
子类会添加批量预加载。 -
内容编辑
PHAsset
和PHAssetChangeRequest
类定义了请求照片或视频内容进行编辑的方法,并将您的编辑提交到照片库。 为了支持不同应用程序和扩展程序之间的编辑连续性,Photos保留每个资产的当前版本和以前的版本,以及描述上次编辑的PHAdjustmentData对象。 如果您的应用程式支持上一次编辑的调整,您可以允许使用者还原或变更编辑内容。
在iOS和macOS中,Photos框架提供了类用于开发照片编辑扩展以用于照片应用程序; 然而,扩展的主类必须采用由PhotosUI框架定义的PHContentEditingController
协议。
相关类
与照片库交互
获取访问权限,更改资产和集合以及注册照片库更改时发送的更新消息的权限。
类 | 说明 |
---|---|
PHPhotoLibrary | 管理对用户的照片库的访问和更改的共享对象。 |
检索
这些模型类表示照片库的内容:资源和集合。这些类的实例是只读的,不可变的,并且只包含元数据。要使用资产和集合,您可以使用这些类来获取与指定查询匹配的一组对象。
类 | 说明 |
---|---|
PHAsset | 图片,视频或实时照片在照片库中的表示 |
PHAssetCollection | Photos资源分组的表示形式,例如片刻,用户创建的相册或智能相册 |
PHCollectionList | 包含Photos资源集合的群组的表示,例如片刻年份或用户创建的相册的文件夹 |
PHCollection | Photos资源集合和集合列表的抽象父类 |
PHObject | Photos模型对象(资产和集合)的抽象超类 |
PHFetchResult | 从照片提取方法返回的资源或集合的有序列表。 |
PHFetchOptions | 一组影响过滤,排序和管理结果的选项 |
加载资源内容
使用这些类来请求与相册资源相关联的图片,视频或实时照片内容。照片根据你的指定自动下载或生成图像,缓存它们以便快速重用。您还可以请求批量预加载图像,以便利用大量资产提高性能。
类 | 说明 |
---|---|
PHImageManager | 提供用于检索或生成预览缩略图以及与相册资源相关联的全尺寸图片或视频数据的方法。 |
PHCachingImageManager | 提供用于检索或生成预览缩略图以及与照片资源相关联的全尺寸图片或视频数据的方法,针对批量预加载大量素材资源进行了优化。 |
PHImageRequestOptions | 从图片管理器中获取静态图片时的选项。 |
PHVideoRequestOptions | 从图片管理器中获取视频时的选项 |
PHLivePhotoRequestOptions | 从图片管理器中获取LivePhoto的选项 |
PHLivePhoto | 实时照片的可显示的表示 - 包括从其捕获之前和之后的时刻的运动和声音的图片 |
请求更改
要更改资产或集合,请创建描述您的编辑的更改请求对象,并明确将它们提交到照片库。此架构可让您轻松,安全,高效地在多线程或多个应用和应用扩展对相同资源进行编辑。
类 | 说明 |
---|---|
PHContentEditingInput | 提供有关要编辑的图片,视频或实时照片内容的信息和访问权限的容器 |
PHContentEditingOutput | 您提供编辑的照片,视频或实时照片内容的结果的容器 |
PHAdjustmentData | 对资产的照片,视频或实时照片内容所做的修改的说明,允许您的应用重新构建或恢复之前编辑会话的效果。 |
PHContentEditingInputRequestOptions | 当您请求编辑Photos资源的内容时,影响图片或视频数据投放的一组选项 |
PHLivePhotoEditingContext | 用于修改实时照片的照片,视频和音频内容的编辑会话。 |
PHFetchResult | 从照片提取方法返回的资源或集合的有序列表。 |
PHLivePhotoFrame | 在编辑上下文中为实时照片的单个框架提供图像内容的容器 |
变化观察
只要其他应用程式,其他装置或应用程式中其他位置的程式变更资产的内容或中继资料或集合中的资产清单,相片便会显示您的应用程式。这些对象提供有关每次更改之前和之后的对象状态的信息,从而可以轻松更新您的用户界面以进行匹配。
类 | 说明 |
---|---|
PHPhotoLibraryChangeObserver | 您可以实现的协议,以通知照片库中发生的更改 |
PHChange | 照片库中发生的更改的说明 |
PHObjectChangeDetails | 对资产或集合对象中发生的更改的描述 |
PHFetchResultChangeDetails | 对在抓取结果中列出的资产或收集对象集合中发生的更改的说明。 |
使用资产资源
一个或多个资产资源对象表示每个Photos资源的基础数据存储。使用这些对象直接处理这些资源 - 例如,备份和恢复资源。
类 | 说明 |
---|---|
PHAssetResource | 与照片库中的照片,视频或实时照片资源相关联的基础数据资源。 |
PPHAssetCreationRequest | 从底层数据资源创建新的Photos资源的请求,用于照片库更改块 |
PHAssetResourceCreationOptions | 影响从底层资源创建新Photos资源的一组选项。 |
PHAssetResourceManager | 提供访问与Photos资源相关联的资源的基础数据存储的方法。 |
PHAssetResourceRequestOptions | 影响您从资产资源管理器请求的基础资产数据交付的一组选项。 |
媒体类型和子类型
与PHAsset和PHContentEditingInput类一起使用的常量,用于标识或请求不同类型的资产。
类 | 说明 |
---|---|
PHAssetMediaType | 标识资产的常规类型(例如图片或视频)的常量。 |
PHAssetMediaSubtype | 标识资产媒体的特定变体的常数,例如全景图或截屏照片和时间流逝或高帧速率视频。 |