如何在iOS中的相同UICollectionView中加载图像和视频

时间:2017-02-26 11:29:17

标签: ios swift avfoundation photokit

Plese refer to this pic

我正在尝试使用一个集合视图,该视图可以根据时间戳显示来自相机胶卷的所有图像和视频。

我只能加载图片或只能加载两个视频。

我试过下面的代码

        var photos: PHFetchResult<PHAsset>! // user photos array in collectionView for disaplying video thumnail 
        func getAssetFromPhoto() {
            let options = PHFetchOptions()
            options.sortDescriptors = [ NSSortDescriptor(key: "creationDate", ascending: true) ]
            options.predicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.video.rawValue)
            photos = PHAsset.fetchAssets(with: options)
            print(photos)
            photoCollectionView.reloadData() // reload your collectionView
        }

正如您在上面的代码中看到的那样,在定义选项时,我们只能要求进行视频收集或图像收集。

我如何将两者结合起来。 请注意:我对任何类型的开发建议持开放态度,并且作为一种解决方法,我将PHFetchResult合并到一个集合中并填充我的集合视图。

这是唯一的方法吗?或Apple是否为此提供api。

1 个答案:

答案 0 :(得分:2)

您是否尝试过创建AND谓词?

let videoPredicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.video.rawValue)
let imagePredicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.image.rawValue)
let predicate = NSCompoundPredicate(andPredicateWithSubPredicates: [videoPredicate, imagePredicate])

options.predicate = predicate

甚至,根本不提供谓词。谓词用于过滤结果。如果您不想过滤结果,请不要使用谓词。