Popularity
6.4
Stable
Activity
0.0
Declining
801
16
49

Code Quality Rank: L5
Programming language: Swift
Tags: UI    
Latest version: v0.1.1

BouncyPageViewController alternatives and similar libraries

Based on the "UI" category

Do you think we are missing an alternative of BouncyPageViewController or a related project?

Add another 'UI' Library

README

BouncyPageViewController

Version License Platform

Page view controller with bounce effect inspired by motion design by Stan Yakushevish.

[](GIFs/dribble.gif) [](GIFs/bouncyDemo.gif)

Quickstart

Create a queue of UIViewControllers to display

let pagesQueue: [UIViewController]() = ... // your view controllers here

Create a BouncyPageViewController passing initial view controllers

let pageViewController = BouncyPageViewController(initialViewControllers: Array(pagesQueue[0...1]))

Assign closures for providing next/pevious view controllers

pageViewController.viewControllerAfterViewController = self.viewControllerAfterViewController
pageViewController.viewControllerBeforeViewController = self.viewControllerBeforeViewController

Vend the next ViewController from the queue

func viewControllerAfterViewController(prevVC: UIViewController) -> UIViewController? {
    if let idx = self.pagesQueue.index(of: prevVC), idx + 1 < self.pagesQueue.count {
        return self.pagesQueue[idx + 1]
    }
    return nil
}

Assign a didScroll callback closure

pageViewController.didScroll = self.pageViewControllerDidScroll

Update the UI using the offset and progress

func pageViewControllerDidScroll(pageViewController: BouncyPageViewController, offset: CGFloat, progress: CGFloat) {
    for vc in pageViewController.visibleControllers() {
        let vc = (vc as! ViewController)
        vc.progress = progress

    }
}

Configuration

How much pages overlap eachother, more inset - higher bounce

    public var pageContentInset: CGFloat = 30

How long the bounce animates when you release the page

    public var pageBounceAnimationDuration: TimeInterval = 1

How far you can scroll the last page until it snaps back (half of the page by default)

    public var overscrollBounceMultiplier: CGFloat = 0.5

Example

To run the example project, clone the repo

$ pod install

and run as usual.

Installation

Requirements

iOS 9+

Swift 3

Carthage

To use latest release add this to Cartfile:

git "https://github.com/BohdanOrlov/BouncyPageViewController"

Then run in terminal:

$ carthage update

CocoaPods

BouncyPageViewController is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod "BouncyPageViewController"

Due to Swift 3, you have to add this to the end of Podfile:

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['SWIFT_VERSION'] = '3.0'
        end
    end
end 

Author

Bohdan Orlov, bohdan.orlov@gmail.com

License

BouncyPageViewController is available under the MIT license. See the LICENSE file for more info.


*Note that all licence references and agreements mentioned in the BouncyPageViewController README section above are relevant to that project's source code only.