iOS PhotoKit:获取除全景图以外的所有智能相册

Posted

技术标签:

【中文标题】iOS PhotoKit:获取除全景图以外的所有智能相册【英文标题】:iOS PhotoKit: Fetch all smart albums except panoramas 【发布时间】:2016-11-22 21:35:18 【问题描述】:

我正在使用以下代码获取所有智能相册:

PHAssetCollection.fetchAssetCollections(with: PHAssetCollectionType.smartAlbum, subtype: PHAssetCollectionSubtype.albumRegular, options: nil)

如何从此次提取中排除全景智能相册?我假设我必须使用选项参数添加谓词,但我不知道如何格式化谓词。

【问题讨论】:

仅进行提取然后消除或忽略全景专辑不是更容易吗? 【参考方案1】:

如果您想排除全景图,请考虑使用数组并仅获取您需要的集合。换句话说,将集合列入白名单。或者您可以枚举集合并排除全景图。白名单还可以让您控制集合的顺序。

var smartAlbums: [PHAssetCollection] = []
let subtypes:[PHAssetCollectionSubtype] = [
    // all photos collection
    // .smartAlbumUserLibrary,
   .smartAlbumFavorites,
   .smartAlbumPanoramas,
   .smartAlbumLivePhotos,
   .smartAlbumBursts,
   .smartAlbumDepthEffect,
   .smartAlbumLongExposures,
   .smartAlbumScreenshots,
   .smartAlbumSelfPortraits
]

smartAlbums = fetchSmartCollections(with: .smartAlbum, subtypes: subtypes)

private func fetchSmartCollections(with: PHAssetCollectionType, subtypes: [PHAssetCollectionSubtype]) -> [PHAssetCollection] 
    var collections:[PHAssetCollection] = []
    let options = PHFetchOptions()
    options.includeHiddenAssets = false

    for subtype in subtypes 
        if let collection = PHAssetCollection.fetchAssetCollections(with: with, subtype: subtype, options: options).firstObject 
            collections.append(collection)
        
    

    return collections

【讨论】:

以上是关于iOS PhotoKit:获取除全景图以外的所有智能相册的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin - 是不是有与适用于 Android 的 Photokit (iOS) 类似的框架,或者是获取图库中所有图像的文件流的好方法?

iOS PhotoKit框架如何获取视频文件大小

iOS PhotoKit框架 详解

蜂巢拆分字符串以获取除第一个以外的所有项目?

iOS PhotoKit 教程

iOS PhotoKit 教程