{"id":18389304,"url":"https://github.com/rightpoint/boardingpass","last_synced_at":"2025-08-04T18:39:55.736Z","repository":{"id":56903886,"uuid":"63785541","full_name":"Rightpoint/BoardingPass","owner":"Rightpoint","description":"A navigation controller interactive pan to push and pop.","archived":false,"fork":false,"pushed_at":"2017-06-14T01:29:25.000Z","size":733,"stargazers_count":14,"open_issues_count":1,"forks_count":1,"subscribers_count":6,"default_branch":"develop","last_synced_at":"2025-03-22T11:42:44.065Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Rightpoint.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-07-20T13:54:16.000Z","updated_at":"2021-12-09T05:15:17.000Z","dependencies_parsed_at":"2022-08-20T18:50:36.955Z","dependency_job_id":null,"html_url":"https://github.com/Rightpoint/BoardingPass","commit_stats":null,"previous_names":["raizlabs/boardingpass"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rightpoint%2FBoardingPass","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rightpoint%2FBoardingPass/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rightpoint%2FBoardingPass/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rightpoint%2FBoardingPass/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Rightpoint","download_url":"https://codeload.github.com/Rightpoint/BoardingPass/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247583263,"owners_count":20962002,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T01:42:28.309Z","updated_at":"2025-04-07T02:34:10.172Z","avatar_url":"https://github.com/Rightpoint.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BoardingPass\n\u003e Navigate Your View Stack with Interactive Swipe Gestures\n\n[![Build Status](https://travis-ci.org/Raizlabs/BoardingPass.svg?branch=develop)](https://travis-ci.org/Raizlabs/BoardingPass)\n[![Version](https://img.shields.io/cocoapods/v/BoardingPass.svg?style=flat)](http://cocoapods.org/pods/BoardingPass)\n[![License](https://img.shields.io/cocoapods/l/BoardingPass.svg?style=flat)](http://cocoapods.org/pods/BoardingPass)\n[![Platform](https://img.shields.io/cocoapods/p/BoardingPass.svg?style=flat)](http://cocoapods.org/pods/BoardingPass)\n[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)\n\nBoardingPass is a subclass of `UINavigationController` with interactive push and pop gestures. It offers behaviors similar to `UIPageViewController`, but with all of the familiar behaviors of navigation controllers, and the ability to easily animate property changes alongside the transitions.\n\n![BoardingPass](Resources/boardingPass.gif)\n\n## Features\n\n- [x] Interactive swipe and pan transitions\n- [x] Navigation Controller push and pop use slide animation as well\n- [x] Supports animating other properties alongside the transition\n- [x] Fine grained control over when the push and pop gestures should be active.\n\n## Requirements\n\n- iOS 9.0+\n- Xcode 8.0+\n\n## Installation with CocoaPods\n\nBoardingPass is available through [CocoaPods](http://cocoapods.org). To install\nit, simply add the following line to your Podfile:\n\n```ruby\npod 'BoardingPass'\n```\n\n## Installation with Carthage\nCreate a `Cartfile` that lists the framework and run `carthage update`. Follow the [instructions](https://github.com/Carthage/Carthage#if-youre-building-for-ios) to add `$(SRCROOT)/Carthage/Build/iOS/BoardingPass.framework` to an iOS project.\n\n```ogdl\ngithub \"Raizlabs/BoardingPass\"\n```\n\n#### Manually\n1. Download all of the `.swift` files in `BoardingPass/` and drop them into your project.  \n2. Congratulations!  \n\n## Usage example\n\nTo see a complete example of using the gallery, take a look at the [sample project](https://github.com/Raizlabs/BoardingPass/blob/develop/BoardingPassExample/Onboarding%20Demo/OnboardingWrapperViewController.swift).\n\n### Simple Boarding\n\nAt it's simplest, a `BoardingNavigationController` can be initialized with an array of view controllers, and that will allow the user to swipe forward and backward through the navigation stack.\n\n```swift\nfunc beginOnboarding() {\n    let viewControllers = [\n        FirstViewController(),\n        SecondViewController(),\n        ThirdViewController(),\n        ]\n    let onboarding = BoardingNavigationController(viewControllersToPresent: viewControllers)\n    present(onboarding, animated: true, completion: nil)\n}\n```\n\n### Controlling Navigation\n\nFor finer grained control over navigation, for instance to now allow the user to page backward after viewing the complete boarding stack, a view controller can conform to the `BoardingInformation` protocol and set a value for `nextViewController` or `previousViewController`.\n\n```swift\nextension ThirdViewController: BoardingInformation {\n\n    var nextViewController: UIViewController? {\n        let completed = CompletedViewController()\n        return completed\n    }\n\n}\n```\n\nBy returning a view controller outside of the series of view controllers to present, the `BoardingNavigationController` will disable the swipe gestures once the user advances to the `CompletedViewController`.\n\n### Going Above and Beyond\n\nTo give the boarding stack a more custom look and feel, `BoadingPass` is designed to make it easy to add animations that run alongside the push and pop presentations. To add a progress slider and a background color alongside navigation animations.\n\nThe first step is defining a protocol that each of the presented view controllers is going to conform to, and a delegate protocol that the BoardingInformation subclass is going to conform to to allow the view controllers to communicate back up to the container.\n\n```swift\nprotocol BackgroundColorProvider: class {\n\n    weak var onboardingDelegate: OnboardingViewControllerDelegate? { get set }\n    var backgroundColor: UIColor { get }\n    var currentProgress: Progress { get }\n\n}\n```\n\n```swift\nprotocol OnboardingViewControllerDelegate: class {\n\n    var backgroundColor: UIColor? { get set }\n    var progress: Progress { get set }\n\n}\n```\n\nNext the `BackgroundColorProvider` can be extended to create a shared function the generate closure to animate the background color and progress indicator.\n\n```\nextension BackgroundColorProvider {\n\n    var animation: (() -\u003e Void) {\n        return { [unowned self] in\n            self.onboardingDelegate?.backgroundColor = self.backgroundColor\n            self.onboardingDelegate?.progress = self.currentProgress\n        }\n    }\n\n}\n```\n\nThen each class implementing `BackgroundColorProvider` needs to add a method to `viewWillAppear` to perform the coordinated animation alongside the current context, with a fallback of executing the animation if there is no context.\n\n```swift\n    override func viewWillAppear(_ animated: Bool) {\n        super.viewWillAppear(animated)\n        let factory: AnimationFactory = { [unowned self]  (_, _) in\n            return self.animation\n        }\n        perform(coordinatedAnimations: factory)\n    }\n```\n\n## Contributing\n\nIssues and pull requests are welcome! Please ensure that you have the latest [SwiftLint](https://github.com/realm/SwiftLint) installed before committing and that there are no style warnings generated when building.\n\nContributors are expected to abide by the [Contributor Covenant Code of Conduct](https://github.com/Raizlabs/BoardingPass/blob/develop/CONTRIBUTING.md).\n\n## License\n\nBoardingPass is available under the MIT license. See the LICENSE file for more info.\n\n## Author\n\nMichael Skiba, \u003cmailto:mike.skiba@raizlabs.com\u003e [@atelierclkwrk](https://twitter.com/atelierclkwrk)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frightpoint%2Fboardingpass","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frightpoint%2Fboardingpass","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frightpoint%2Fboardingpass/lists"}