Показать фото/видео из массива в collectionview, scrollview?

Для отображения фото/видео из массива в CollectionView и ScrollView вам потребуется использовать несколько компонентов Swift. Давайте разберемся с ними по очереди.

Первым делом вам нужно создать массив, который будет содержать фото или видео, которые вы хотите отображать. Предположим, что у вас есть массив mediaArray, в котором хранятся фото или видео объекты.

Для начала создадим CollectionView. Вам понадобится создать новый класс, наследующий от UICollectionViewDelegate и UICollectionViewDataSource. В этом классе вы должны реализовать несколько методов:

class MyCollectionViewDataSource: NSObject, UICollectionViewDelegate, UICollectionViewDataSource {

    var mediaArray: [MediaType] = []

    // Количество объектов в массиве
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return mediaArray.count
    }

    // Создание и настройка ячейки CollectionView
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MediaCell", for: indexPath) as! MediaCollectionViewCell

        // Здесь вы можете настроить ячейку, например, установить изображение на основе объекта из mediaArray
        let mediaObject = mediaArray[indexPath.row]
        cell.imageView.image = mediaObject.image

        return cell
    }
}

Затем создайте на вашем экране CollectionView и подключите его к созданному классу DataSource:

let collectionView = UICollectionView(frame: CGRect.zero, collectionViewLayout: UICollectionViewFlowLayout())
let collectionViewDataSource = MyCollectionViewDataSource()

// Установите направление прокрутки горизонтальной или вертикальной
let flowLayout = UICollectionViewFlowLayout()
flowLayout.scrollDirection = .horizontal
collectionView.collectionViewLayout = flowLayout

collectionView.dataSource = collectionViewDataSource
collectionView.delegate = collectionViewDataSource

Теперь у вас есть работающий CollectionView, который отображает фото или видео из вашего массива.

Теперь рассмотрим ScrollView.

ScrollView может быть использован для отображения фотографий или видео в увеличенном виде. Он лучше подходит для отображения отдельных элементов, чем для отображения списка.

Вам снова понадобится создать новый класс, наследующий от UIScrollViewDelegate. В этом классе вы должны реализовать методы, чтобы ScrollView отображал фотографии или видео из вашего массива.

class MyScrollViewDelegate: NSObject, UIScrollViewDelegate {

    var mediaArray: [MediaType] = []

    // Создайте и настройте View для объекта ScrollView
    func setupScrollView() {
        for (index, mediaObject) in mediaArray.enumerated() {
            let imageView = UIImageView(frame: CGRect(x: index * scrollView.frame.width, y: 0, width: scrollView.frame.width, height: scrollView.frame.height))
            imageView.image = mediaObject.image
            imageView.contentMode = .scaleAspectFit
            scrollView.addSubview(imageView)
        }

        scrollView.contentSize = CGSize(width: scrollView.frame.width * CGFloat(mediaArray.count), height: scrollView.frame.height)
    }

    // Метод вызывается при прокручивании ScrollView
    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        // Здесь вы можете выполнить дополнительные действия при прокрутке, если это необходимо
    }
}

Затем создайте ScrollView и подключите его к созданному классу Delegate:

let scrollView = UIScrollView(frame: view.bounds)
let scrollViewDelegate = MyScrollViewDelegate()

scrollView.isPagingEnabled = true
scrollView.showsHorizontalScrollIndicator = false

scrollView.delegate = scrollViewDelegate

// Установите ваш массив с фото или видео
scrollViewDelegate.mediaArray = mediaArray

// Настроим ваши вьюшки
scrollViewDelegate.setupScrollView()

Теперь у вас есть работающий ScrollView, который отображает фото или видео из вашего массива.

Помните, что вы можете настроить и дополнить этот код в соответствии с вашими требованиями и оформлением пользовательского интерфейса.