My example project. Thoughts about app architecture, realizations custom view presentations, ets.
Код проекта содержит реализацию гибко кастомизированного модального окна
Основная цель -- легкая расширяемость функционала, поэтому я не стал выносить код в отдельный pod.
**Реализация модального окна поделена на сущности:
Interaction
Отвечает за реализацию интерактивной анимации. Реализует протокол PopoverViewControllerDelegate, с помощью которого можно добавить интерактивную анимацию на события взаимодействия пользователя с контентом модального окна.
Presentation
Реализует стэк протоколов( PresentationParamsProvider ). Они описывают все параметры, которые можно использовать для кастомизации переходов. Реализует PresentationAnimatorProvider, он описывает анимацию переходов в виде инстанцев отдельных классов( Animator ).
Animator
Классы, которые описывают анимацию переходов.
Controller
Управляет представлением и переходом контроллеров
Delegate
Сборка компонентов, формирование зависимостей: событие-реализация.
Manager
Выполняет роль конструктора.