Как загрузить изображения и видео в том же UICollectionView в 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 предоставляет API для того же.

1 ответ

Решение

Вы пытались создать и предикат 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

Или даже не предоставляя предикат вообще. Предикат используется для фильтрации результатов. Если вы не хотите фильтровать результаты, просто не используйте предикат.

Другие вопросы по тегам