A Swift library for building interactive, interruptible custom view controller transitions on iOS.
Transition is a Swift library for iOS that enables developers to create custom, interactive, and interruptible view controller transitions. It solves the complexity of managing animation delegates, interaction phases, and interruption logic by providing a structured, modular approach to defining transitions.
iOS developers building apps with custom navigation flows, modal presentations, or tab bar transitions who need fine-grained control over transition animations and interactions.
Developers choose Transition because it drastically reduces the boilerplate and complexity of implementing custom iOS transitions, offering a clean, composable API that handles interruption and interaction logic out of the box.
Easy interactive interruptible custom ViewController transitions
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Promotes clean separation of concerns with single-responsibility components like AnimationLayer and TransitionAnimation, reducing the boilerplate typically required for custom iOS transitions.
Simplifies adding custom gesture interactions to transitions, with examples showing interactive modal and tab bar transitions handled out of the box.
Enables animating elements between transitioning views for cohesive effects, as demonstrated in the modal examples with visual continuity.
Manages transition cancellation and reversal smoothly, ensuring a polished user experience even when animations are interrupted.
UIPresentationController animations are acknowledged as not working properly in the backlog, limiting use cases for custom presentations.
Requires defining multiple components (AnimationLayer, TransitionAnimation, Transition, TransitionController) even for simple transitions, which can feel over-engineered compared to lighter alternatives.
Lacks a comprehensive library of ready-to-use transitions; developers must implement all animation logic manually, as shown in the examples requiring custom code.