Swiftpack.co - Package - james01/CardNavigation
Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.


CocoaPods Platform

The easiest way to turn a navigation controller into an interactive stack of cards.


  • ✅ Fully interactive and interruptible
  • ✅ Works seamlessly with scroll views
  • ✅ Supports changes in orientation
  • ✅ Can be used with or without storyboards
  • ✅ Written entirely in Swift using standard UIKit components




To install CardNavigation using CocoaPods, add the following line to your Podfile:

pod 'CardNavigation', '~> 1.0'

Swift Package Manager

To install CardNavigation using the Swift Package Manager, add the following value to your Package.swift:

dependencies: [
    .package(url: "https://github.com/james01/CardNavigation.git", .upToNextMajor(from: "1.0.0"))


Getting Started

CardNavigation consists of a single class: CardNavigationController. It behaves like a standard UINavigationController.

At the top of the file where you'd like to use a CardNavigationController, import CardNavigation.

import CardNavigation

Create your CardNavigationController instance the way you would a regular old UINavigationController.

let nav = CardNavigationController(rootViewController: SomeViewController())

Navigation Bar Color

By default, the navigation bar is transparent. The color that shows in its place is the background color of the navigation controller.

nav.view.backgroundColor = .systemTeal

Card Appearance

To change the card appearance, create a custom view class.

import UIKit

class MyCardBackgroundView: UIView {

    override init(frame: CGRect) {
        super.init(frame: frame)
        backgroundColor = .white

        layer.cornerRadius = 32
        layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner]
        layer.cornerCurve = .continuous

        layer.borderColor = UIColor.black.cgColor
        layer.borderWidth = 4

    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")

Then, create a subclass of CardNavigationController and override the cardBackgroundViewClass property to return your custom class.

import UIKit
import CardNavigation

class MyCardNavigationController: CardNavigationController {

    override var cardBackgroundViewClass: UIView.Type {
        return MyCardBackgroundView.self


James Randolph (@jamesrandolph01)


CardNavigation is released under the MIT license. See LICENSE for details.


Stars: 15


Version 1.0.0 - 2020-12-29T07:17:23