iOS 如何在同一 UICollectionView 中加载图像和视频
How to load images and videos in same UICollectionView in iOS
我正在尝试创建一个集合视图,它可以根据时间戳显示相机胶卷中的所有图像和视频。
我只能加载图片或只能加载视频,不能同时加载。
我试过下面的代码
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 是否为相同的 .
您尝试过创建 OR 谓词吗?
let videoPredicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.video.rawValue)
let imagePredicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.image.rawValue)
let predicate = NSCompoundPredicate(orPredicateWithSubPredicates: [videoPredicate, imagePredicate])
options.predicate = predicate
甚至,根本不提供谓词。谓词用于过滤结果。如果您不想过滤结果,请不要使用谓词。
我正在尝试创建一个集合视图,它可以根据时间戳显示相机胶卷中的所有图像和视频。
我只能加载图片或只能加载视频,不能同时加载。
我试过下面的代码
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 是否为相同的 .
您尝试过创建 OR 谓词吗?
let videoPredicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.video.rawValue)
let imagePredicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.image.rawValue)
let predicate = NSCompoundPredicate(orPredicateWithSubPredicates: [videoPredicate, imagePredicate])
options.predicate = predicate
甚至,根本不提供谓词。谓词用于过滤结果。如果您不想过滤结果,请不要使用谓词。