Photos框架详细解析(一) —— 基本概览

版本记录

版本号 时间
V1.0 2018.02.07

前言

Photos框架使用Photos应用管理的图片和视频资源,包括来自iCloud Photo Library和Live Photos的图片和视频资源。 异步获取并缓存全尺寸资源或缩略图,修改内容并将修订同步到多个设备。接下来几篇我们就一起看一下这个框架。

Overview

下面先看一下该框架的基本信息。

3691932-07be165d38fb4ee8.png

下面看一下该框架的基本结构。

3691932-40ac7daa37fa693d.png

在iOS和MacOS中,Photos框架提供了支持为照片应用程序构建照片编辑扩展的类。 在iOS和tvOS中,Photos框架还可以直接访问由Photos应用管理的照片和视频资产,包括iCloud Photo Library。 使用此框架检索资源以进行显示和回放,编辑其图像或视频内容,或使用相册,momentsiCloud Shared Albums等资源集合。


Features & Concepts

在iOS和tvOS中,Photos框架包含许多与用户的照片库直接相关的功能。

  • Fetching objects and requesting changes.获取对象并请求更改。 Photos框架模型类(PHAssetPHAssetCollection,和PHCollectionList)的实例表示用户在Photos应用中使用的项目:资源(图像,视频和Live Photos),资源集合(如专辑或moments)以及 收藏列表(例如相册文件夹或moment clusters)。 这些对象是只读的,不可变的,只包含元数据。

您通过获取感兴趣的资源和集合,然后使用这些对象来获取需要使用的数据。 要进行更改,您可以创建更改请求对象,并将其明确提交给共享的PHPhotoLibrary对象。 这种架构使得从多个线程或多个应用程序和应用程序扩展使用相同的资产变得简单,安全和高效。

  • Change observing.改变观察。使用共享的PHPhotoLibrary对象为您获取的资产和集合注册更改处理程序。只要其他应用或设备更改资产的内容或元数据或集合中的资产列表,Photos就会告诉您的应用。 PHChange对象在每次更改之前和之后提供有关对象状态的信息,使用易于更新集合视图或类似接口的语义。

  • Support for Photos app features.支持Photos应用功能。使用PHCollectionList类查找相应于Photos应用程序中的Moments层次结构的资源。使用PHAsset类可以识别连拍照片,全景照片和高帧频视频。启用iCloud Photo Library后,Photos框架中的资源和集合反映了同一个iCloud帐户上所有设备上的可用内容。

  • Asset and thumbnail loading and caching.资产和缩略图加载和缓存。使用PHImageManager类来请求指定大小的资源的图像,或使用视频资源的AV Foundation对象。 根据您的规范Photos框架自动下载或生成图像,缓存它们以便快速重用。为了提高大量资产的性能(例如,在使用缩略图填充集合视图时),PHCachingImageManager子类会添加批量预加载。

  • Asset content editing.资产内容编辑。 PHAssetPHAssetChangeRequest类定义方法来请求照片或视频内容进行编辑,并将您的编辑提交到照片库。为了支持在不同应用和扩展程序之间进行编辑的连续性,Photos会使用描述上次编辑的 PHAdjustmentData对象来保存每个资源的当前版本和先前版本。如果您的应用程序支持先前编辑的调整数据,则可以允许用户恢复或更改编辑。

在iOS和MacOS中,Photos框架提供了用于开发照片编辑扩展以供在Photos应用程序中使用的类,然而,扩展的主要类必须采用由PhotosUI框架定义的PHContentEditingController协议。有关Photos应用程序扩展程序的详细信息,请参阅PhotosUIApp Extension Programming Guide


Topics

1. Interacting with the Photos Library

您可以使用共享照片库对象来获取用户对您的应用程序的访问权限,以访问照片内容,对资产和收藏进行更改,以及注册照片库更改时发送的更新消息。

  • PHPhotoLibrary
    • 管理对用户照片库的访问和更改的共享对象。

2. Retrieving and Examining Assets

这些模型类表示照片库的内容:资产和集合。 这些类的实例是只读的,不可变的,只包含元数据。 要使用资产和集合,可以使用这些类来获取与指定查询匹配的一组对象。

  • PHAsset

    • 照片库中的图像,视频或Live Photo的表示形式。
  • PHAssetCollection

    • 照片资源分组的表示形式,例如moment,用户创建的相册或智能相册。
  • PHCollectionList

    • 包含照片资产集合的组的表示形式,例如即时年份或用户创建的相册文件夹。
  • PHCollection

    • 照片资源收藏和收藏列表的抽象超类。
  • PHObject

    • Photos模型对象(资产和集合)的抽象超类。
  • PHFetchResult

    • 从Photos提取方法返回的资产或集合的有序列表。
  • PHFetchOptions

    • 一组选项,用于影响当您提取素材资源或集合对象时Photos返回的结果的过滤,排序和管理。

3. Loading Asset Content

使用这些类可以请求与Photos资产相关联的图像,视频或 Live Photo内容。 Photos 自动下载或生成您指定规格的图像,缓存他们以便快速重用。 您还可以请求预先加载批量图片,以便使用大量资产实现更快的性能。

  • PHImageManager

    • 提供检索或生成预览缩略图和与Photos资产相关的全尺寸图像或视频数据的方法。
  • PHCachingImageManager

    • 提供检索或生成预览缩略图和与Photos资产相关联的全尺寸图像或视频数据的方法,针对批量预加载大量资产进行了优化。
  • PHImageRequestOptions

    • 影响您从图片管理器请求的照片资源的静态图像表示的一组选项。
  • PHVideoRequestOptions

    • 影响您从图像管理器请求的视频资产数据传送的一组选项。
  • PHLivePhotoRequestOptions

    • 影响您从图片管理器请求的Live Photo资源传递的一组选项。
  • PHLivePhoto

    • Live Photo的可显示表示 - 包含拍摄前后瞬间的动态和声音的图片。

4. Requesting Changes

要更改资产或集合,请创建描述您的编辑的更改请求对象,并将其明确提交到Photos库。 这种架构使得从多个线程或多个应用程序和应用程序扩展使用相同的资产变得简单,安全和高效。

5. Editing Asset Content

在应用程序或扩展程序中使用这些类来访问资产数据进行编辑,并将编辑提交到Photos库。 Photos管理描述每个编辑的资产和调整数据的多个版本,以便您的应用或扩展程序可以允许用户恢复或继续处理先前进行的编辑,即使在不同的设备上。

要为Photos应用构建照片编辑扩展程序,请将这些类与PhotosUI框架一起使用。

  • PHContentEditingInput

    • 提供关于和访问要编辑的资产的图像,视频或Live Photo内容的信息的容器。
  • PHContentEditingOutput

    • 您向其提供编辑照片资源的照片,视频或Live Photo内容结果的容器。
  • PHAdjustmentData

    • 描述对资产的照片,视频或Live Photo内容所做的修改,使您的应用可以重建或恢复之前编辑会话的效果。
  • PHContentEditingInputRequestOptions

    • 当您请求编辑Photos资源的内容时,影响图像或视频数据传送的一组选项。
  • PHLivePhotoEditingContext

    • 用于修改Live Photo的照片,视频和音频内容的编辑会话。
  • PHLivePhotoFrame

    • 在编辑上下文中为Live Photo的单个帧提供图像内容的容器。

6. Observing Changes

只要应用中的其他应用,其他设备或代码更改资产的内容或元数据或集合中的资产列表,Photos就会告诉您的应用。 这些对象在每次更改之前和之后提供有关对象状态的信息,使您可以轻松更新用户界面以进行匹配。

7. Working with Asset Resources

一个或多个资产资源对象代表每个Photos资产的基础数据存储。 使用这些对象直接使用这些资源,例如备份和恢复资源。

8. Classes

9. Reference

后记

本篇已结束,后面更精彩~~~

3691932-53c5e37eb359c30a.jpg

猜你喜欢

转载自blog.csdn.net/weixin_34254823/article/details/87637554
今日推荐