Отображение изображения или автоматическое воспроизведение видео, например, в Instagram - PullRequest
0 голосов
/ 12 марта 2020

Я хочу создать ленту наподобие Instagram, где я могу отображать автозапуск видео при открытии записи или показа сообщения (изображения).

Как этого добиться, используя collectionView и только одну ячейку для видео и изображения? enter image description here

Ответы [ 2 ]

1 голос
/ 12 марта 2020

Вы можете попробовать эту демонстрацию или код для автоматического воспроизведения видео, например Instagram

{ ссылка }

1 голос
/ 12 марта 2020

Вы можете отслеживать ячейки, которые должны отображаться на экране, используя collectionView:willDisplayCell:forItemAtIndexPath:, и ячейки, которые собираются удалить, используя collectionView:didEndDisplayingCell:forItemAtIndexPath:.

Затем используйте collectionView.convert, чтобы вычислить, какая из этих ячеек в данный момент больше всего отображается на экране, а затем автоматически воспроизвести видео в этой ячейке. Обновите автозапуск, когда пользовательская прокрутка обнаружена с помощью scrollViewDidScroll и новая ячейка больше присутствует на экране.

Мы могли бы иметь такую ​​структуру поста:

struct post {
  videoURL: String?
  imageURL: String?
}

В которой сообщение с видео будет иметь значение nUR в качестве значения imageURL, и наоборот. При получении сообщений вы можете поместить их в массив.

Затем вы можете просмотреть свои данные и использовать func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell, чтобы определить, какой тип UICollectionViewCell отображать для определенного индекса в вашем массиве данных.

...