0

В настоящее время я создаю объектное приложение c в xcode с полноэкранным представлением коллекции с горизонтальной прокруткой с ячейками, которые занимают около 80% экрана; аналогично Instagram, Vine и т. д. Первоначально в этих ячейках находятся миниатюры видео, которые загружаются из исходного файла при загрузке представления.Эффективное управление загрузкой при прокрутке на UICollectionView видео

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

Путь, я достичь этого прямо сейчас с помощью метода scrollViewDidEndDecelerating вычислить какой элемент находится в центре экрана после прокрутки, а затем начинает загружать видео, а также метод scrollViewDidScroll для остановки процесса загрузки видео. Эта реализация приведена ниже:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{ 

    //calculate which cell is in the center 
    //load video in respective cell 

} 

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{ 

    //stop loading video 

} 

Как вы, вероятно, можете видеть, это порождает массу проблем УБА:

  1. Видео не запускается загрузки до скроллинга не остановил полностью
  2. Этот подход не учитывает жест перетаскивания до Перейти к обзору коллекции
  3. После загрузки видео любое перетаскивание или прокрутка останавливает загрузку/воспроизведение видео
  4. Есть случаи, когда видео не загружается, между свитками

Я пытаюсь превратить этот современный подход в систему, аналогичную методику Instagram погрузочных видео, которое выглядит следующим образом:

  1. Видео начинает загружаться, как только оно начинает отображаться на экране во время прокрутки пользователя.
  2. Видео перестает загружаться, когда на экране появляется новое видео, когда пользователь прокручивает.
  3. Один видео всегда загружается, нет времени простоя между загрузкой одного видео и другой

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

+0

Вместо того, чтобы вывести видимость ячейки на основе прокрутки вы можете чтобы проверить методы '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '. Как показывают названия, они сообщают вам, когда вы захотите начать загрузку на основе отображаемой ячейки. – davidf2281

ответ

0
  1. Вы должны сделать так, чтобы видео использовало «ленивую загрузку» для загрузки его содержимого/миниатюры.

  2. Чтобы сделать это играть, когда ячейка находится в центре, используйте scrollViewDidScroll, чтобы обнаружить, если клетка полностью показывая способом, указанным в этом answer

+0

Я знаю, как сделать видеозапись, когда она находится в центре, и я знаю, как загрузить ее содержимое, я пытаюсь изменить функциональность на то, что я описал во втором списке. – Roger99

+0

Возможно, я неправильно понял, что вы хотите во втором списке просто lazyloading? – GeneCode

 Смежные вопросы

  • Нет связанных вопросов^_^