Использование Open Cover Flow для слайдов видео вместо изображений в iOS - PullRequest
6 голосов
/ 23 декабря 2011

Можете ли вы использовать Cover Flow для нескольких видео вместо изображений в iOS? Пользователь будет видеть неподвижное начало каждого видео с кнопкой воспроизведения вместо изображений, вроде Youtube.

Таким образом, вместо набора изображений, подобных текущему Cover Flow в iOS, это будет набор видео. Или видео и изображения перепутаны.

Ответы [ 2 ]

4 голосов
/ 31 декабря 2011

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, который был миниатюрой для видео, и повторно использовать представление каждый раз для каждого видео. Плюсом этого является то, что вы можете смешивать изображения и видео, различая только тогда, когда вам нужно отобразить изображение / видео в полноэкранном режиме. И это будет так же просто, как запросить класс, а затем настроить другое представление для отображения в зависимости от класса. Этого достаточно информации? Скажите, если что-то не понятно.

4 голосов
/ 28 декабря 2011

Почему бы не использовать уменьшенные изображения для представления видео? Когда изображение нажимается, видео загружается. Это позволило бы приложению использовать меньшую вычислительную мощность и позволить интеграцию с текущими методами потока покрытия iOS.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...