iCarousel - это фреймворк, который я бы использовал в этом случае. Это библиотека замены CoverFlow, поскольку CoverFlow - недокументированный API под iOS. Смотрите описание на сайте GitHub и читайте примечание ниже.
В отличие от многих других библиотек "CoverFlow", iCarousel может работать с любым видом, а не только с изображениями, поэтому он идеально подходит для гибкого и впечатляющего представления выгружаемых данных в вашем приложении.
Я сам не пробовал это с видеообъектами, но из документации и этого может показаться, что вы можете передать видеообъекты или миниатюры, которые при нажатии загружают видео. Что касается производительности, миниатюры будут иметь гораздо больше смысла. Ниже приведен исходный код из файла readme с пояснениями по его использованию.
iCarousel следует соглашению Apple для представлений, управляемых данными,
предоставление двух протокольных интерфейсов, iCarouselDataSource и
iCarouselDelegate. Протокол iCarouselDataSource имеет следующее
требуемые методы (примечание: для Mac OS замените NSView на UIView в
аргументы метода):
- (NSUInteger)numberOfItemsInCarousel:(iCarousel *)carousel;
Возвращает количество элементов (просмотров) в карусели.
- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view;
Возвращает вид, который будет отображаться с указанным индексом в карусели. Аргумент reusingView работает как UIPickerView, где представления, которые ранее отображались в карусели, передаются обратно в метод, подлежащий переработке. Если этот аргумент равен nil, вы можете установить его свойства и вернуть его вместо создания нового экземпляра представления, что немного повысит производительность. В отличие от UITableView, отсутствует reuseIdentifier для различения разных типов представлений карусели, поэтому, если ваша карусель содержит несколько разных типов представлений, вам следует просто игнорировать этот параметр и возвращать новое представление при каждом вызове метода. Вы должны убедиться, что каждый раз, когда вызывается метод carousel: viewForPageAtIndex:, он либо возвращает reusingView, либо совершенно новый экземпляр представления, а не поддерживает собственный пул перерабатываемых представлений, так как возвращение нескольких копий одного и того же представления для разных индексов элементов карусели может вызвать проблемы с отображением карусели.
Итак, для второго метода вы могли бы реализовать UIImageView
, который был миниатюрой для видео, и повторно использовать представление каждый раз для каждого видео. Плюсом этого является то, что вы можете смешивать изображения и видео, различая только тогда, когда вам нужно отобразить изображение / видео в полноэкранном режиме. И это будет так же просто, как запросить класс, а затем настроить другое представление для отображения в зависимости от класса. Этого достаточно информации? Скажите, если что-то не понятно.