TransitioningKit
A Swift framework to simplify custom iOS view transitions.
Install / Use
/learn @puffinsupply/TransitioningKitREADME
TransitioningKit
PRERELEASE
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
- PSViewControllerTransitioningDelegate
- PSPanGestureInteractionController
- PSPanGestureInteractionControllerDelegate
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

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:
- FirstViewToSecondViewPushAnimator implements the animation.
- FirstViewInteractionControllerDelegate handles the pan gesture.
PSPanGestureInteractionControlleris instantiated withFirstViewInteractionControllerDelegate.PSNavigationControllerDelegateis instantiated with the interaction controller and the animator.PSNavigationControllerDelegateis assigned as the navigation controllerdelegate.
2. Second View Controller → Third View Controller
In this instance, we are seeing a modal “present” & “dismiss” operation between these two view controllers.
- ThirdViewControllerPresentAnimator and ThirdViewControllerDismissAnimator implement the animations.
PSViewControllerTransitioningDelegateis instantiated with the animators.PSViewControllerTransitioningDelegateis assigned to as the modal view controller'stransitioningDelegate.
Installation
Carthage
Add the following to your project's Cartfile:
github "puffinsupply/TransitioningKit" >= 0.0.1
License
Related Skills
node-connect
354.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
112.3kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
354.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
354.3kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
