Latest 0.1
License MIT
Platforms ios 8.0, requires ARC

Version Carthage

TransitioningKit is a Swift framework providing a set of components for simplifying, clarifying, & standardizing the implemention of custom Navigation & View Controller transitions.

TransitioningKit currently provides three commonly needed public classes, and one public protocol:


A concrete implementation of the UINavigationControllerDelegate protocol.

When assigned to the delegate property of a UINavigationController, PSNavigationControllerDelegate assumes the responsibility of vending UIViewControllerAnimatedTransitioning (“animator”) and UIPercentDrivenInteractiveTransition (“interaction controller”) objects for push and pop transitions.


A concrete implementation of the UIViewControllerTransitioningDelegate protocol.

Similar to PSNavigationControllerDelegate, when assigned to the transitioningDelegate property of a UIViewController, PSViewControllerTransitioningDelegate assumes the responsibility of vending UIViewControllerAnimatedTransitioning (“animator”), UIPercentDrivenInteractiveTransition (“interaction controller”), and UIPresentationController (“presentation controller”) objects for present and dismiss transitions.


A subclass of UIPercentDrivenInteractiveTransition.

PSPanGestureInteractionController coordinates a UIPanGestureRecognizer to simplify implementation of common gesture driven interactive transitions. It includes simple a delegate protocol which you implement to customize behavior for your application.


A custom protocol for handling PSPanGestureInteractionController events within your application.



Here we have a simplified example of transitioning between three view controllers.

1. First View Controller → Second View Controller

In this instance, we are seeing a custom, interactive, “push” operation between these two view controllers. Here are the parts involed in this operation:

  1. FirstViewToSecondViewPushAnimator implements the animation.
  2. FirstViewInteractionControllerDelegate handles the pan gesture.
  3. PSPanGestureInteractionController is instantiated with FirstViewInteractionControllerDelegate.
  4. PSNavigationControllerDelegate is instantiated with the interaction controller and the animator.
  5. PSNavigationControllerDelegate is assigned as the navigation controller delegate.
2. Second View Controller → Third View Controller

In this instance, we are seeing a modal “present” & “dismiss” operation between these two view controllers.

  1. ThirdViewControllerPresentAnimator and ThirdViewControllerDismissAnimator implement the animations.
  2. PSViewControllerTransitioningDelegate is instantiated with the animators.
  3. PSViewControllerTransitioningDelegate is assigned to as the modal view controller’s transitioningDelegate.



Add the following to your project’s Cartfile:

github "puffinsupply/TransitioningKit" >= 0.0.1


Latest podspec

    "name": "TransitioningKit",
    "version": "0.1",
    "summary": "A Swift framework for simplifying, clarifying, & standardizing custom navigation & view controller transitions.",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    "homepage": "",
    "authors": {
        "Adam Michela": "[email protected]"
    "source": {
        "git": "",
        "tag": "0.1"
    "source_files": "TransitioningKit/*.swift",
    "platforms": {
        "ios": "8.0"
    "requires_arc": true

Pin It on Pinterest

Share This