Ультравизуальное приложение для iPhone, такое как прокрутка UIView или UITableView

Может кто-нибудь, пожалуйста, дайте мне подсказку о том, как воссоздать эффект прокрутки, используемый в приложении UltraVisual для iPhone? Здесь gif, чтобы проиллюстрировать эффект:

enter image description here

Первая "cell" - полная высота, а остальные отображаемые ячейки - обычным. Пока пользователь прокручивается, первая ячейка медленно оживляет обычную высоту, а следующая медленно увеличивается. Используют ли они UITableView? Или a UIScrollView?, я понятия не имею, как это сделано...

Ответы

Ответ 1

Ха, ты сделал мой день! Я на самом деле написал это представление:)

Это на самом деле очень просто. Это представление использует UICollectionView с пользовательским UICollectionViewLayout.

Общим принципом является это. Я составляю "интервал перетаскивания" - это необходимое расстояние для перетаскивания между каждой ячейкой. Это значение произвольно, но влияет на то, сколько пользователь должен перетаскивать для переключения ячеек. Общая высота представления коллекции - это "интервал перетаскивания" * количество элементов в представлении. Затем я устанавливаю макет автоматически разбиения на страницы до ближайшего интервала перетаскивания (что дает ему поведение привязки). Это очень похоже на то, как работает покрытие. Из этого вы можете рассчитать индекс "верхней ячейки", разделив contentOffset.y на высоту.

С индексом "top cell" вы можете легко сгенерировать кадры для каждой ячейки. Кадр верхней ячейки - {0, contentOffset.y, 320, 176}, и оттуда вы можете рассчитать следующий кадр ячеек и т.д.

Затем последний трюк вычисляет интерполяцию индекса страницы. Это в основном десятичная часть текущего индекса ячейки. Это даст число от 0 до 1, которое может быть использовано для вычисления интерполяции между верхним кадром и рамкой ниже.

Каждый "prepareLayout" вычисляет кадры ячеек на экране, а затем в layoutAttributesForElementsInRect:, генерирует все атрибуты layoutAttributes на основе сгенерированных фреймов.

Используя этот трюк, вы можете создавать всевозможные сложные макеты. UICollectionView может быть мощным зверьком, но определенно требуется немного, чтобы обернуть вокруг вас голову.

Ответ 2

Это очень здорово! Мы сделали довольно простой в использовании элемент управления, который можно найти здесь:

https://github.com/RobotsAndPencils/RPSlidingMenu