Skip to content

djnivek/TransitioningKit

 
 

Repository files navigation

TransitioningKit

PRERELEASE

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:

PSNavigationControllerDelegate

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.

PSViewControllerTransitioningDelegate

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.

PSPanGestureInteractionController

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.

PSPanGestureInteractionControllerDelegate

A custom protocol for handling PSPanGestureInteractionController events within your application.

Example

Example

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.

Installation

Carthage

Add the following to your project's Cartfile:

github "puffinsupply/TransitioningKit" >= 0.0.1

License

About

A Swift framework to simplify custom iOS view transitions.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Swift 97.0%
  • Ruby 2.4%
  • Objective-C 0.6%