Ответ 1
Анимации календаря iOS7, я думаю, выполняются с помощью анимированных макетов перехода в виде коллекции, которые замечательны, но не совсем то, что вы хотите для этой ситуации. Кроме того, они, похоже, удерживают вас в одном контроллере представления, который может не соответствовать сценарию мастер-детали, описанному выше.
Недавно я играл с анимированными переходами и обнаружил, что новые представления моментальных снимков, доступные в iOS7, являются блестящими для такого рода вещей.
Я большой поклонник автоматического макета, но переходные анимации с использованием ограничений слишком сложны. Однако вы можете предположить, что в начале перехода ваши представления уже выложены, поэтому вы можете применить следующие принципы:
- Добавить входящий просмотр в иерархию вашего представления.
- Создайте пустой холст в верхней части этого
- Создайте моментальный снимок вашего исходящего представления и добавьте его на холст
- Создайте снимок вашего входящего представления и добавьте его в холст
- Выполните анимацию между двумя
- Удалить холст
Поскольку макет уже произошел, вы можете использовать свойства center
или frame
ваших существующих представлений на этих моментальных снимках и просто анимировать их. Это делает код намного легче читать. Это то, о чем говорит вышеприведенный комментарий Augie.
В вашем случае вы можете получить эффект, которым вы пользуетесь, привязывая различные виды выбранной ячейки к представлениям входящего контроллера и оживляя их на новые позиции.
Я сделал пример проекта с этим переходом, доступный на GitHub. Окончательный эффект выглядит следующим образом:
Это просто быстрый пример, показывающий, как можно выполнить анимацию. В производственном коде вы могли бы заставить участвующие контроллеры соответствовать протоколу, в котором они вернули несколько представлений для использования при переходе, вместо того, чтобы напрямую подвергать свойства и привязывать переход к этим конкретным классам.