Skip to content

Commit 6b3501e

Browse files
authored
Merge pull request #1 from elilien/main
Added ability to configure navigation orientation for SPPageController.
2 parents b6da41c + a48f567 commit 6b3501e

5 files changed

Lines changed: 16 additions & 8 deletions

File tree

Example App/iOS Example/Controllers/ViewController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ class ViewController: UIViewController {
5353
controllers.append(navigationController)
5454
}
5555

56-
let pageController = SPPageController(childControllers: controllers, system: .page)
56+
let pageController = SPPageController(childControllers: controllers, navigationOrientation: .horizontal, system: .page)
5757

5858
// Example of manage layout margins.
5959
//pageController.view.layoutMargins = .init(horizontal: 50, vertical: 0)

Sources/SPPageController/Collection/SPPageCollectionController.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ class SPPageCollectionController: UICollectionViewController, UICollectionViewDe
2525

2626
// MARK: - Init
2727

28-
init(childControllers: [UIViewController]) {
28+
init(childControllers: [UIViewController], scrollDirection: UICollectionView.ScrollDirection = .horizontal) {
2929
self.childControllers = childControllers
3030
let layout = SPPageCollectionViewFlowLayout()
3131
layout.minimumLineSpacing = .zero
3232
layout.minimumInteritemSpacing = .zero
33-
layout.scrollDirection = .horizontal
33+
layout.scrollDirection = scrollDirection
3434
super.init(collectionViewLayout: layout)
3535

3636
for controller in childControllers {

Sources/SPPageController/Page/SPPageNativeController.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ class SPPageNativeController: UIPageViewController, UIPageViewControllerDataSour
2525

2626
// MARK: - Init
2727

28-
init(childControllers: [UIViewController]) {
28+
init(childControllers: [UIViewController], navigationOrientation: UIPageViewController.NavigationOrientation = .horizontal) {
2929
self.childControllers = childControllers
30-
super.init(transitionStyle: .scroll, navigationOrientation: .horizontal, options: [:])
30+
super.init(transitionStyle: .scroll, navigationOrientation: navigationOrientation, options: [:])
3131
guard let firstController = self.childControllers.first else { return }
3232
setViewControllers([firstController], direction: SPPageNativeController.direction, animated: false, completion: nil)
3333
}

Sources/SPPageController/SPPageController.swift

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,15 @@ open class SPPageController: UIViewController, SPPageControllerInterface {
4646

4747
// MARK: - Init
4848

49-
public init(childControllers: [UIViewController], system: SPPageControllerSystem) {
49+
public init(childControllers: [UIViewController], navigationOrientation: SPPageControllerNavigationOrientation = .horizontal, system: SPPageControllerSystem) {
5050
self.storedChildControllers = childControllers
5151
switch system {
5252
case .page:
53-
containerController = SPPageNativeController(childControllers: storedChildControllers)
53+
let orientation: UIPageViewController.NavigationOrientation = navigationOrientation == .horizontal ? .horizontal : .vertical
54+
containerController = SPPageNativeController(childControllers: storedChildControllers, navigationOrientation: orientation)
5455
case .scroll:
55-
containerController = SPPageCollectionController(childControllers: storedChildControllers)
56+
let direction: UICollectionView.ScrollDirection = navigationOrientation == .horizontal ? .horizontal: .vertical
57+
containerController = SPPageCollectionController(childControllers: storedChildControllers, scrollDirection: direction)
5658
}
5759
super.init(nibName: nil, bundle: nil)
5860
}

Sources/SPPageController/SPPageControllerSystem.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,9 @@ public enum SPPageControllerSystem {
2626
case page
2727
case scroll
2828
}
29+
30+
public enum SPPageControllerNavigationOrientation {
31+
32+
case vertical
33+
case horizontal
34+
}

0 commit comments

Comments
 (0)