如何获取照片相册标题,图像计数在swift?

时间:2018-05-15 10:01:37

标签: ios photos

我正在构建类似iOS标准照片应用的Gallery应用。 (斯威夫特4.1)

我想获取启动标准照片应用时可以看到的缩略图,标题和图片总数。

照片框架似乎比我想象的要复杂。

要找到解释原因的方法并且应该采用哪些程序并不容易。

你能告诉我这个吗?

1 个答案:

答案 0 :(得分:1)

达到所要求的最低步骤数为:

  // import the framework
  import Photos

  // get the albums list
  let albumList = PHAssetCollection.fetchAssetCollections(with: .album, subtype: .albumRegular, options: nil)

  // you can access the number of albums with
  albumList.count
  // individual objects with
  let album = albumList.object(at: 0)
  // eg. get the name of the album
  album.localizedTitle

  // get the assets in a collection
  func getAssets(fromCollection collection: PHAssetCollection) -> PHFetchResult<PHAsset> {
    let photosOptions = PHFetchOptions()
    photosOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: true)]
    photosOptions.predicate = NSPredicate(format: "mediaType == %d", PHAssetMediaType.image.rawValue)

    return PHAsset.fetchAssets(in: collection, options: photosOptions)
  }

  // eg.
  albumList.enumerateObjects { (coll, _, _) in
        let result = self.getAssets(fromCollection: coll)
        print("\(coll.localizedTitle): \(result.count)")
    }

  // Now you can:
  // access the count of assets in the PHFetchResult
  result.count

 // get an asset (eg. in a UITableView)
 let asset = result.object(at: indexPath.row)

 // get the "real" image
 PHCachingImageManager.default().requestImage(for: asset, targetSize: CGSize(width: 200, height: 200), contentMode: .aspectFill, options: nil) { (image, _) in
        // do something with the image
    }

我还建议您查看Apple sample code for the Photos framework,与Photos framework documentation一起使用并不难理解。