FRLayeredNavigationController, an iOS container view controller that works like a stack of paper with an API similar to UINavigationController.
Objective-C Shell Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
FRLayeredNavigationController.xcodeproj MINOR: Updated to Xcode 7.1 Recommended Settings Dec 8, 2015
FRLayeredNavigationControllerDemo MINOR: Updated to Xcode 7.1 Recommended Settings Dec 8, 2015
docs UPDATE: Documentation May 27, 2013
.gitignore MINOR: Fixed Warnings, Update Check in Xcode 6, and Other Smallities Aug 31, 2014
FRLayeredNavigationController.podspec TRIVIAL: Bump version to 0.4.4 Mar 1, 2013
FRLayeredNavigationControllerRotation.png BUGFIX: more correct handling of view.bounds and view.frame Aug 7, 2012
FRLayeredNavigationControllerScreenshot2.png added screenshots May 19, 2012
LICENSE MINOR: Updated Copyright to 2015 Feb 16, 2015
VERSION DOC: updated documentation (displayShadow/enableUserInteraction) Jul 29, 2012 MINOR: Modernized Codebase Aug 24, 2013


FRLayeredNavigationController, an iOS container view controller with an API similar to UINavigationController. Influenced by the UI of the Twitter and Soundcloud iPad apps, the user will think of a stack of paper and has similar interaction options.

Official Project Home: . You can also find FRLayeredNavigationController at Ohloh.

See below for documentation and instructions (including a screencast) on how to add FRLayeredNavigationController to your project.

If you have further questions, feel free to mail me!

Flattr this git repo

©2012-2015, Johannes Weiß for factis research GmbH.



  • The API feels very natural to iOS developers since it's very similar to the API of UINavigationController
  • FRLayeredNavigationController uses ARC (automatic reference counting) but you can use it in your legacy projects without ARC, too
  • Low memory conditions and rotation are handled correctly with FRLayeredNavigationController
  • FRLayeredNavigationController works on the iPad, the iPhone and iPod touch but the UI concept is best on the iPad since the big screen
  • You can easily install FRLayeredNavigationController using CocoaPods or manually (screencast and instructions below)
  • Correctly handles view.frame and view.bounds and has therefore no problems with view.transform (such as rotations) as you can see on this screenshot.
  • App Store compatible (uses only Public API and was already approved by Apple)
  • iOS 7 & 8 Support (still supports iOS6 and older with old visuals)


It's all open source but you can use it in your commercial product free of charge. FRLayeredNavigationController is licensed under the terms of the Modified BSD License.

Demo Videos


Known Users

RecordBox (App Store)

Checkpad MED

Wunderlist (App Store)

Adding FRLayeredNavigationController to your project

FRLayeredNavigationController is compiled as static libraries. It use Xcode's "dependent project" facilities. If you're familiar with CocoaPods use that, just add the dependency 'FRLayeredNavigationController' to your Podfile.

Here is how: Estimated time: 5 minutes.

There's also a screencast which shows how to add FRLayeredNavigationController to a project and how to switch from UINavigationController to FRLayeredNavigationController: .

  1. Clone the FRLayeredNavigationController git repository: git clone Make sure you store the repository in a permanent place because Xcode will need to reference the files every time you compile your project.

  2. Locate the "FRLayeredNavigationController.xcodeproj" file under "FRLayeredNavigationController". Drag FRLayeredNavigationController.xcodeproj and drop it onto the root of your Xcode project's "Groups and Files" sidebar.

  3. Now you need to link the FRLayeredNavigationController static libraries to your project. Add libFRLayeredNavigationController.a to the Link Binary With Libraries section of your project's Build phases.

  4. Finally, we need to tell your project where to find the FRLayeredNavigationController headers. Open your "Project Settings" and go to the "Build" tab. Look for "Header Search Paths" and double-click it. Add the relative path from your project's directory to the "FRLayeredNavigationController/" directory.

  5. While you are in Project Settings, go to "Other Linker Flags" under the "Linker" section, and add "-ObjC", "-fobjc-arc" and "-all_load" to the list of flags.

  6. You're ready to go. Just #import "FRLayeredNavigationController/FRLayeredNavigation.h" anywhere you want to use FRLayeredNavigationController in your project.

If you want to, you can install appledoc and type appledoc . in FRLayeredNavigationController's root directory to install the API documentation in Xcode.