Latest 0.1.2
License MIT
Platforms ios 11.0

CI Status


SwiftyPageController will be helpful to use in many pages controller.


  • customizable animation transition;
  • customizable selecting buttons (you can implement them by your own)

How to use

  • Add Contanier View from storyboard or programmatically

  • Choose class for container controller SwiftyPageController

  • Setup like example below
class ViewController: UIViewController {

    @IBOutlet weak var segmentControl: UISegmentedControl!

    var containerController: SwiftyPageController!

    override func viewDidLoad() {
        segmentControl.addTarget(self, action: #selector(segmentControlDidChange(_:)), for: .valueChanged)

    func segmentControlDidChange(_ sender: UISegmentedControl) {
        // select needed controller
        containerController.selectController(atIndex: sender.selectedSegmentIndex, animated: true)

    func setupContainerController(_ controller: SwiftyPageController) {
        // assign variable
        containerController = controller

        // set delegate
        containerController.delegate = self

        // set animation type
        containerController.animator = .parallax

        // set view controllers
        let firstController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "(FirstViewController.self)")
        let secondController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "(SecondViewController.self)")
        let thirdController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "(ThirdViewController.self)")
        containerController.viewControllers = [firstController, secondController, thirdController]

        // select needed controller
        containerController.selectController(atIndex: 0, animated: false)

    // MARK: - Navigation

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if let containerController = segue.destination as? SwiftyPageController {

  • In ViewController where you added container controller implement SwiftyPageControllerDelegate
func swiftyPageController(_ controller: SwiftyPageController, alongSideTransitionToController toController: UIViewController) {


    func swiftyPageController(_ controller: SwiftyPageController, didMoveToController toController: UIViewController) {
        segmentControl.selectedSegmentIndex = containerController.viewControllers.index(of: toController)!

    func swiftyPageController(_ controller: SwiftyPageController, willMoveToController toController: UIViewController) {

  • For selecting needed tab use method
 func selectController(atIndex index: Int, animated: Bool)


To choose animation use property

public var animator: AnimatorType

You can use three types of animation:

  • default
  • parallax
  • custom

    If you want to create own animation you need to implement SwiftyPageControllerAnimatorProtocol.

public protocol SwiftyPageControllerAnimatorProtocol {

    var animationDuration: TimeInterval { get }

    var animationProgress: Float { get set }

    var animationSpeed: Float { get set }

    func setupAnimation(fromController: UIViewController, toController: UIViewController, panGesture: UIPanGestureRecognizer, animationDirection: SwiftyPageController.AnimationDirection)

    func didFinishAnimation(fromController: UIViewController, toController: UIViewController)


And use it like that:

containerController.animator = .custom(CustomAnimationController())


To run the example project, clone the repo, and run pod install from the Example directory first.



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

pod "SwiftyPageController"


alkhokhlov, [email protected]


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

Latest podspec

    "name": "SwiftyPageController",
    "version": "0.1.2",
    "summary": "SwiftyPageController will be helpful to use in many pages controller.",
    "description": "SwiftyPageController is a full customizable pages controllernnAdvantages:n - customizable animation transition;n - customizable selecting buttons (you can implement them by your own)",
    "homepage": "",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    "authors": {
        "alkhokhlov": "[email protected]"
    "source": {
        "git": "",
        "tag": "0.1.2"
    "platforms": {
        "ios": "11.0"
    "source_files": "SwiftyPageController/Classes/**/*",
    "pushed_with_swift_version": "4.0"

Pin It on Pinterest

Share This