Page view controller with bounce effect inspired by motion design by Stan Yakushevish.
let pagesQueue: [UIViewController]() = ... // your view controllers here
let pageViewController = BouncyPageViewController(initialViewControllers: Array(pagesQueue[0...1]))
pageViewController.viewControllerAfterViewController = self.viewControllerAfterViewController
pageViewController.viewControllerBeforeViewController = self.viewControllerBeforeViewController
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
}
pageViewController.didScroll = self.pageViewControllerDidScroll
func pageViewControllerDidScroll(pageViewController: BouncyPageViewController, offset: CGFloat, progress: CGFloat) {
for vc in pageViewController.visibleControllers() {
let vc = (vc as! ViewController)
vc.progress = progress
}
}
public var pageContentInset: CGFloat = 30
public var pageBounceAnimationDuration: TimeInterval = 1
public var overscrollBounceMultiplier: CGFloat = 0.5
To run the example project, clone the repo
$ pod install
and run as usual.
iOS 9+
Swift 3
To use latest release add this to Cartfile:
git "https://github.com/BohdanOrlov/BouncyPageViewController"
Then run in terminal:
$ carthage update
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
Bohdan Orlov, [email protected]
BouncyPageViewController is available under the MIT license. See the LICENSE file for more info.