Я пытаюсь добиться следующего эффекта:
A UICollectionView
отображает сетку ячеек для родительского типа объекта, e. г. фотоальбом. Когда я нажимаю один из этих элементов, я бы хотел прокрутить этот элемент в верхней части экрана и открыть из него папку Springboard. Внутри этой области папок должна быть показана другая коллекция, состоящая из элементов детали, т.е. е. отдельные фотографии этого альбома. Нажатие в оставшемся "родительском" представлении снова закрывает папку. См. Эту схему:
То, что я сделал до сих пор, - это регулярное представление коллекции для альбомов. Когда я выбираю один, он прокручивает выбранный элемент вверх, а затем использует JWFolders
, чтобы открыть пустую папку в этом месте. Как только это будет показано, я вызываю окружающий UINavigationController
, чтобы нажимать мой второй контроллер просмотра с деталями. Это выкладывается, так что он кажется пользователю, как если бы он был тем же самым видом.
Есть несколько проблем с этим подходом, и я хотел бы знать, как это сделать лучше:
-
JWFolders делает снимок экрана и анимирует две половины его вверх/вниз для достижения эффекта открытия. Это нормально, но довольно медленно на iPad3, потому что он перемещает много пикселей, и iPad3 GPU не совсем подходит для этой задачи.
-
Второе представление должно быть идеальным для пикселя, чтобы соответствовать первому. Вероятно, это случайно сломается.
-
Я ограничен относительно того, какие анимации возможны для перехода контроллера просмотра. По умолчанию
UINavigationController
нажатие справа не подходит. Я переоцениваю это, чтобы сделать кросс-растворение, но все же это далеко не идеально.
Я хотел бы получить ориентиры относительно того, как подходить к этой проблеме в ремонте, что не требует много творческого взлома против того, что создаются каркасами. Я мог бы пропустить что-то очевидное здесь, поэтому оценены указатели на примеры или общие рекомендации.
Update:
Я немного изменил подход. Теперь я использую контроллер контейнера, который имеет два встроенных контроллера просмотра коллекций. Один для "Альбом" и один для части "Фотографии" внизу. Используя UIImageView
в середине между ними, я могу получить треугольник, направленный вверх. Это также хорошо с точки зрения обслуживания, поскольку упрощает техническое обслуживание, когда две коллекции обрабатываются полностью отдельно.
В приложении используется автоматический макет, поэтому я могу изменить объем пространства, в котором каждый из двух вложенных представлений принимает путем изменения ограничений. Это намного быстрее, чем подход, основанный на скриншоте, с JWFolders и прекрасно работает на iPad3.
Это почти меня, где я хочу быть. Единственное, что остается, это получить правильную анимацию открытия. Я хотел бы одновременно прокрутить коллекцию альбомов, чтобы постученный элемент переместился в верхнюю часть и расширил коллекцию фотографий с помощью треугольника, указывающего на ячейку альбома.
Можно ли каким-либо образом "подключить" нижний вид к этой ячейке с помощью ограничений макета, чтобы вызов scrollToItemAtIndexPath:atScrollPosition:animated:
перетащил нижний вид?