RZTransitions (1).png

Build StatusRZTransitions is a library built by myself and others while at Raizlabs to make iOS 7 custom view controller transitions easy and awesome.



  • A comprehensive library of animation controllers
  • A comprehensive library of interaction controllers
  • Mix and match any animation controller with any interaction controller
  • A shared instance manager that helps wrap the iOS7 custom transition protocol to expose a friendlier API

You can use any of the animation controllers or interaction controllers without the RZTransitionsManager and simply use them with the iOS7 custom View Controller transition APIs.


CocoaPods (Recommended)

Add the following to your Podfile:

pod 'RZTransitions', '~> 1.0'

RZTransitions follows semantic versioning conventions. Check the releases page for the latest updates and version history.

Manual Installation

Copy and add all of the files in the RZTransitions directory (and its subdirectories) into your project.

Setting a New Default Transition

id<RZAnimationControllerProtocol> presentDismissAnimationController = [[RZZoomAlphaAnimationController alloc] init];
id<RZAnimationControllerProtocol> pushPopAnimationController = [[RZCardSlideAnimationController alloc] init];
[[RZTransitionsManager shared] setDefaultPresentDismissAnimationController:presentDismissAnimationController];
[[RZTransitionsManager shared] setDefaultPushPopAnimationController:pushPopAnimationController];

When Presenting a View Controller

[self setTransitioningDelegate:[RZTransitionsManager shared]];
UIViewController *nextViewController = [[UIViewController alloc] init];
[nextViewController setTransitioningDelegate:[RZTransitionsManager shared]];
[self presentViewController:nextViewController animated:YES completion:nil];

When creating a Navigation Controller ( or use RZTransitionsNavigationController )

UINavigationController *navigationController = [[UINavigationController alloc] init];
[navigationController setDelegate:[RZTransitionsManager shared]];

Specifying Transitions for Specific View Controllers

// Use the RZZoomPushAnimationController when pushing from this view controller to a
// RZSimpleCollectionViewController or popping from a RZSimpleCollectionViewController to
// this view controller.
[[RZTransitionsManager shared] setAnimationController:[[RZZoomPushAnimationController alloc] init]
                                   fromViewController:[self class]
                                     toViewController:[RZSimpleCollectionViewController class]

Hooking up Interactors

@property (nonatomic, strong) id<RZTransitionInteractionController> presentInteractionController;

- (void)viewDidLoad
    // Create the presentation interaction controller that allows a custom gesture
    // to control presenting a new VC via a presentViewController
   self.presentInteractionController = [[RZVerticalSwipeInteractionController alloc] init];
   [self.presentInteractionController setNextViewControllerDelegate:self];
   [self.presentInteractionController attachViewController:self withAction:RZTransitionAction_Present];

- (void)viewWillAppear:(BOOL)animated
    //  Use the present interaction controller for presenting any view controller from this view controller
   [[RZTransitionsManager shared] setInteractionController:self.presentInteractionController
                                        fromViewController:[self class]
Screen shot 2011-07-12 at 3.07.06 AM.png.jpg

Language(s): C++, GLSL
Technology: OpenSceneGraph, OpenGL

This demo program combines typical pathfinding algorithms (A*, Memory limited A*, and Local Beam Search) with a spherical 3D world. Built upon the OpenSceneGraph framework, it is cross platform and specifically configured to work with Visual Studio 2010 and Xcode 4.

Features include:

  • Custom shaders to integrate Light Space Perspective Shadowing with multiple lights.
  • Custom assets developed through a variety of tools such as fracPlanet, Blender, and Adobe Photoshop.
  • An intuitive user interface viewing and selecting 3D paths. - Multi-threaded pathfinding keeps the graphics from slowing down. 

OSX and Windows source code available on GitHub.


Flock was a personal project started at USC under the GamePipe Laboratory and was built with the Unreal Development Kit targeting iPhone, iPad, and PC. Built as an ambient, arcade crossover game, Flock was based on the steering forces AI that the player collects.

Now available for Mac, PC, iPhone, and iPad.


Journey is a companion app concept for sharing time lapsed content captured using Google Glass.


Language(s): C
Technology: HSV-SIFT, OpenCV, GNU Scientific Library

Developed for a CSCI 576, Multimedia Systems, this project sought to reliably index the position and frames that a source image appeared in a video. SIFT, Scale-Invariant Feature Transform, was enhanced by applying SIFT to each of the H,S, and V channels for 3x128 descriptors instead of 1x128. In the graphical output above, hue descriptors are a blue colored arrow, saturation purple, and value green