ios - 如何在 iOS 中的同一个 UICollectionView 中加载图像和视频

标签 ios swift avfoundation photokit

Plese refer to this pic

我正在尝试创建一个 Collection View ,它可以根据时间戳显示相机胶卷中的所有图像和视频。

我只能加载图片或视频,不能同时加载。

我试过下面的代码

        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 并填充我的 Collection View 。

这是唯一的方法吗?或者 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

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

关于ios - 如何在 iOS 中的同一个 UICollectionView 中加载图像和视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42467896/

相关文章:

iOS/Xcode : Group overlapping elements in Stack View

ios - UIScrollView : UIEdgeInsets works only from "Top" and "Left"

ios - 如何在xcode中添加将值传递给文本框的按钮

具有非零 `contents` 的 QTMovieLayer 的 iOS 替代品?

ios - 如何在 iOS Swift 中设置延迟?

iphone - audioPlayerDidFinishPlaying如何知道哪个文件完成了?

iphone - ios特殊字符问题

ios - swift facebook SDK v4.21.0 中的 FBSDKLikeButton 回调

iOS:在相机打开并拍照时播放来自另一个应用程序的音乐

ios - AVPlayer/AVPlayerItem 如何通知我的应用程序无法访问的网络故障?