Развернуть/свернуть UITableViewCell для достижения Evernote-подобного перехода

Я заинтересован в достижении перехода между контроллерами представлений, очень похожими на переход в приложении Evernote iOS:

enter image description here

Когда "Places" используется, он плавно расширяется до того, что выглядит как UINavigationController с зеленой рамкой вокруг него. Чтобы свернуть его, я могу либо нажать "Назад", либо прокрутить с левой стороны экрана, чтобы постепенно перейти на главный экран.

Я не ищу точные образцы кода для копирования-вставки, а скорее для высокоуровневого руководства по концепциям и API Apple для использования. Более конкретно,

  • Какие API-интерфейсы перехода/анимации могут использовать это?
  • Как я могу достичь зеленой границы вокруг всего контроллера вида после расширения "Места"?

Ответ 1

Подход к рассмотрению: вы можете использовать UICollectionView с двумя разными макетами. Нерасширенный макет может быть просто UICollectionViewFlowLayout, а расширенный макет может быть подклассом, который сжимает/исчезает все ячейки, кроме того, который вы хотите расширить. Затем вы можете использовать setCollectionViewLayout:animated: для переключения между ними.

Зеленая рамка просто будет фоном родительского представления, так как это не будет включать UINavigationController.

И если вы хотите, чтобы интерактивный салматический жест возвращался из расширенного макета, вы подключаете UIScreenEdgePanGestureRecognizer к анимации макета интерактивного коллективного просмотра (см. startInteractiveTransitionToCollectionViewLayout:completion:).

Ответ 2

Я думаю, что он использует настраиваемый переход для эффекта увеличения. Это может быть достигнуто с помощью этой сторонней структуры: https://github.com/mluisbrown/LCZoomTransition в качестве шаблона, поскольку контроллер представления назначения выглядит как модальный, а не целевой вид контроллер.

Ответ 3

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

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

http://www.objc.io/issue-12/custom-container-view-controller-transitions.html

https://developer.apple.com/library/IOs/documentation/UIKit/Reference/UIViewControllerTransitioningDelegate_protocol/index.html