PhotoKit的迷你教程

我正在创建一个简短的教程,说明如何从照片库中获取图像并将其显示在故事板上。 这将要求用户许可,然后自动显示图像。 本教程将从库中获取第一张图像并显示它。 我们将使用PhotoKit ,有关更多信息,请阅读Apple指南。

我们首先创建一个名为loadImage的新方法,该方法将返回可选的UIImage 。 我们将使用此方法来抓取图像以显示在屏幕上。 将其设为可选,以防万一我们无法从照片库中获取任何图像。

  1. 创建一个用于获取照片资产的管理器对象。 PHImageManager会缓存资产图片,从而使我们重新请求的资产能够更快地加载。 默认方法返回管理器对象。
  2. 接下来,创建类型为PHFetchResult的fetchResult 。 此类为我们提供了从Photos fetch方法返回的资产的有序列表。 PHAsset实例表示我们将检索的图像。 fetchAssets方法将检索图像。 选项使我们可以对获取的资产进行过滤和排序,而fetchOptions是接下来要创建的方法。
  1. 我们实例化PHFetchOptions类。 此类将使我们能够从获取的资产中过滤,排序和管理结果。
  2. sortDescriptors属性指定获取的对象的顺序。 我们将使用一组键路径和排序顺序来使用NSSortDescriptor数组。 我们将使用creationDate键根据资产的创建日期对资产进行排序。 您可以在此处了解有关关键路径的更多信息。

请求选项方法将返回PHImageRequestOptions 。 我们将使用此方法来影响图像的传递方式。

  1. 我们将isSynchronous的布尔值设置为true。
  2. 此属性使我们可以设置图像的质量或获取请求的传递速度。 我们返回requestOptions ,我们将在loadImage()方法中使用此方法。

让我们回到我们的loadImage方法并添加以下代码:

  1. 我们将创建一个可选图像,并在没有功能的情况下返回该属性。
  2. 使用requestImage查找指定的资产。 我们将使用之前创建的fetchResult对象通过使用object(at :)方法来获取特定索引处的资产。 我们还指定了图像尺寸和内容模式,该模式告诉我们如何使图像适合请求尺寸的宽高比。 我们将创建的requestOptions()方法传递给options参数。 这说明了我们的请求将如何处理。
  3. 创建一个保护声明,以确保我们的img不为空,否则我们只将图像返回nil。 然后,我们将最终返回我们的形象。

接下来,在情节提要中。 将ImageView添加到View Controller中,然后将插座连接到您的swift文件。

  @IBOutlet弱var imageView:UIImageView! 

现在,我们将创建一个处理用户权限的photoAuthorization方法。 此方法将检查用户是否向我们授予了访问照片库的权限,如果获得我们的授权,我们将运行其余方法。 如果没有,我们将只打印一份声明。 如果愿意,可以使用UIAlertController提示警报消息。

  1. 这会检查我们当前的授权状态。 PHPhotoLibrary对象代表“照片”应用程序管理的整个资产集。 switch语句用于检查我们的状态并确定我们应该做什么。
  2. 如果身份验证成功,我们将使用loadImage方法将图像返回到imageView出口。
  3. RequestAuthorization创建一个提示,提示用户接受或拒绝使用图片库。
  4. 如果这是用户首次访问该应用,则我们不希望在没有授权提示的情况下加载图像。 我们将异步加载图像调用。

photoAuthorization方法添加到viewDidLoad中

最后,我们还需要在Info.plist上请求用户许可。 您可以添加“隐私-照片库使用说明”,也可以使用手动在源代码上添加权限:

   NSPhotoLibraryUsageDescription  
  需要访问照片库 

就这样,设置非常简单。 现在,您可以在启动视图控制器时加载图像。 希望您拿走了一些有用的代码!