Swift开发iOS Developer闻道技能(iOS-swift)

Swift 自定义图片选择器(一) -- PhotosFrame

2017-08-23  本文已影响102人  34码的小孩子

先上最终效果图:


图片选择器效果图

使用前需要添加该框架,并且在文件头部 import photos

PhotosFramework

首先我们先了解一下PhotosFramework
Work with image and video assets managed by the Photos app, including those from iCloud Photo Library and Live Photos. Fetch and cache full-sized assets or thumbnails asynchronously, revise content, and sync revisions to multiple devices.

处理图像和视频资源,包括iCloud上的网络资源和本地资源。异步获取和缓存资源,保存资源修改,并且将修改同步到所有的设备中。
在这个项目中,我们只需要获取本地资源,并且展示出来。并没有涉及到iCloud和修改资源。

  1. 用来获取相册的授权情况和请求授权

     let authorizationStatus = PHPhotoLibrary.authorizationStatus()
     switch authorizationStatus {
     case .authorized:
         print("已经授权")
         return true
     case .notDetermined:
         print("不确定是否授权")
         //一般是第一次打开app时的状态
         // 请求授权
         PHPhotoLibrary.requestAuthorization({ (status) in })
     case .denied:
         print("拒绝授权")
     case .restricted:
         print("限制授权")
         break
     }
    
    1. 对照片库进行更改或者是监听相册更改情况。前者应用一般是保存图片、视频等资源到系统相册中(这方面先不深入讨论)。

上面的PHImageRequestOptions是用来设置请求图片的相关属性的。
options.resizeMode 表示:如果资源是压缩图片时,系统对图片解码时会参照targetSize的值。

  PHImageRequestOptions
  .fast 返回的图片可能会比targetSize大
  .exact 则与targetSize保持一致。

  options.deliveryMode 有以下取值:
  .opportunistic 会返回一张小图和大图
  .highQualityFormat 只返回大图
  .fastFormat 只返回小图
结果如下: 智能相册打印结果

由此可见:smartAlbums是PHAssetCollection,是所有智能相册的集合,而该集合里面的元素assetCollection(表示的是某个智能相册)也是PHAssetCollection,包含的PHAsset就是一张照片。

上一篇 下一篇

猜你喜欢

热点阅读