PageController
  • November 27, 2023

PageController is infinite paging controller, scrolling through contents and title bar scrolls with a delay. Then it provide user interaction to smoothly and effortlessly moving. It is for iOS written in Swift.

Requirements


PageController Xcode Swift
0.7.x + 9.4 4.1
0.6.x 9.2 4.0
0.5.x 8.2 3.0
0.4.x 8.0 2.2
0.3.x 7.0+ 2.0
0.2.0 6.4 1.2

Features


  •  To inherit from DCScrollView
  •  Use UIViewController, not UIView like UITabBarController
  •  Support AutoLayout about MenuCell
  •  Handling to change current view controller with Delegate.
  •  Scrolling smoothly and effortlessly
  •  Keep to smoothly in scrolling contents

Installation


CocoaPods

 

pod ‘PageController’

Carthage

To integrate PageController into your Xcode project using Carthage, specify it in your Cartfile:

github “hirohisa/PageController” ~> 0.7.1

Usage


viewControllers

Type is [UIViewController], and element must have title.

import PageController

class CustomViewController: PageController {

override func viewDidLoad() {
super.viewDidLoad()

viewControllers = createViewControllers()
}

func createViewControllers() -> [UIViewController] {
let names = [
“favorites”,
“recents”,
“contacts”,
“history”,
“more”,
]

return names.map { name -> UIViewController in
let viewController = ContentViewController()
viewController.title = name
return viewController
}
}
}

MenuBar

Enable to change backgroundColor, frame. If you change MenuBarCell.height, then override frameForMenuBar and set height.

/// backgroudColor
menuBar.backgroundColor = UIColor.whiteColor().colorWithAlphaComponent(0.9)
/// skip to auto-select after scrolling
menuBar.isAutoSelectDidEndUserInteractionEnabled = false

/// frame, override this function
override var frameForMenuBar: CGRect {
let frame = super.frameForMenuBar

return CGRect(x: frame.minX, y: frame.minY, width: frame.width, height: 60)
}

MenuBarCell

Enable to use Custom Cell supported MenuBarCellable protocol:

public protocol MenuBarCellable {
var index: Int { get set }
func setTitle(_ title: String)
func setHighlighted(_ highlighted: Bool)
func prepareForReuse()
}

public func register(_ cellClass: MenuBarCellable) {
guard let cellClass = cellClass as? UIView.Type else { fatalError() }
self.cellClass = cellClass
}

public func register(_ nib: UINib) {
self.nib = nib
}

MenuBarCellable

public protocol MenuBarCellable {

// it’s used by PageController
var index: Int { get set }

// it is used to set to Label.text, caused by deprecating MenuCell over 0.7
func setTitle(_ title: String)

// it’s instead of `updateData` over 0.7,
func setHighlighted(_ highlighted: Bool)

// Called by the menu bar on creating the instance.
func prepareForUse()

}

GitHub


View Github

#carthage #cocoapods #delay #pagecontroller #scrolling #scrollviewcomponent
YOU MIGHT ALSO LIKE...
🧭 NavigationKit

NavigationKit is a lightweight library which makes SwiftUI navigation super easy to use. 💻 Installation 📦 Swift Package Manager Using Swift Package Manager, add ...

swiftui-navigation-stack

An alternative SwiftUI NavigationView implementing classic stack-based navigation giving also some more control on animations and programmatic navigation. NavigationStack Installation ...

Stinsen

Simple, powerful and elegant implementation of the Coordinator pattern in SwiftUI. Stinsen is written using 100% SwiftUI which makes it ...

SwiftUI Router

With SwiftUI Router you can power your SwiftUI app with path-based routing. By utilizing a path-based system, navigation in your app becomes ...

FlowStacks

This package takes SwiftUI's familiar and powerful NavigationStack API and gives it superpowers, allowing you to use the same API not just ...