Latest 0.1.1
Homepage https://github.com/BohdanOrlov/BouncyPageViewController
License MIT
Platforms ios 8.0
Dependencies RBBAnimation
Authors

Version
License
Platform

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

BouncyPageViewController BouncyPageViewController

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, [email protected]

License

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

Latest podspec

{
    "name": "BouncyPageViewController",
    "version": "0.1.1",
    "summary": "Page view controller with bounce effect",
    "description": "Page view controller with bounce effect inspired by motion design by Stan Yakushevish.",
    "homepage": "https://github.com/BohdanOrlov/BouncyPageViewController",
    "screenshots": [
        "https://github.com/BohdanOrlov/BouncyPageViewController/blob/master/GIFs/dribble.gif?raw=true",
        "https://github.com/BohdanOrlov/BouncyPageViewController/blob/master/GIFs/bouncyDemo.gif?raw=true"
    ],
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    },
    "authors": {
        "Bohdan Orlov": "[email protected]"
    },
    "source": {
        "git": "https://github.com/BohdanOrlov/BouncyPageViewController.git",
        "tag": "0.1.1"
    },
    "social_media_url": "https://twitter.com/bohdan_orlov",
    "platforms": {
        "ios": "8.0"
    },
    "source_files": "BouncyPageViewController/Classes/**/*",
    "dependencies": {
        "RBBAnimation": [
            "0.4.0"
        ]
    }
}

Pin It on Pinterest

Share This