首先发布Demo链接
Photos从相簿中获取图片
效果展示
(一) Photos简介
在iOS 8之前,开发者只能用 AssetsLibrary
框架访问的用户的照片库。几年以来,相机应用和照片应用发生了显著的变化,增加了许多新特性,包括按时刻来组织照片的方式。但与此同时,AssetsLibrary
框架却没有跟上步伐。 随着 iOS 8 的到来,苹果给我们提供了一个现代化的框架 Photos,它比 AssetsLibrary
表现更好,并且拥有让应用和设备照片库无缝工作的特性。
(二)解释
几个常用的类:
PHAsset : 代表照片库中的一个资源,跟 ALAsset 类似,通过 PHAsset
可以获取和保存资源。每个PHAsset就是一张图片的详细信息,包括图片、位置、时间等。
PHFetchOptions : 获取资源时的参数,可以传 nil,即使用系统默认值。
PHFetchResult : 表示一系列的资源集合,也可以是相册的集合。
PHAssetCollection :
表示一个相册或者一个时刻,或者是一个智能相册(系统提供的特定的一系列相册,例如:最近删除,视频列表,收藏等等)。
PHImageManager : 用于处理资源的加载,加载图片的过程带有缓存处理,可以通过传入一个
PHImageRequestOptions 控制资源的输出尺寸等规格。
enum PHAssetCollectionType : Int {
case Album //从 iTunes 同步来的相册,以及用户在 Photos 中自己建立的相册
case SmartAlbum //经由相机得来的相册
case Moment //Photos 为我们自动生成的时间分组的相册
}
enum PHAssetCollectionSubtype : Int {
case AlbumRegular //用户在 Photos 中创建的相册,也就是我所谓的逻辑相册
case AlbumSyncedEvent //使用 iTunes 从 Photos 照片库或者 iPhoto 照片库同步过来的事件。然而,在iTunes 12 以及iOS 9.0 beta4上,选用该类型没法获取同步的事件相册,而必须使用AlbumSyncedAlbum。
case AlbumSyncedFaces //使用 iTunes 从 Photos 照片库或者 iPhoto 照片库同步的人物相册。
case AlbumSyncedAlbum //做了 AlbumSyncedEvent 应该做的事
case AlbumImported //从相机或是外部存储导入的相册,完全没有这方面的使用经验,没法验证。
case AlbumMyPhotoStream //用户的 iCloud 照片流
case AlbumCloudShared //用户使用 iCloud 共享的相册
case SmartAlbumGeneric //文档解释为非特殊类型的相册,主要包括从 iPhoto 同步过来的相册。由于本人的 iPhoto 已被 Photos 替代,无法验证。不过,在我的 iPad mini 上是无法获取的,而下面类型的相册,尽管没有包含照片或视频,但能够获取到。
case SmartAlbumPanoramas //相机拍摄的全景照片
case SmartAlbumVideos //相机拍摄的视频
case SmartAlbumFavorites //收藏文件夹
case SmartAlbumTimelapses