-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPageViewController.swift
More file actions
95 lines (70 loc) · 3.13 KB
/
Copy pathPageViewController.swift
File metadata and controls
95 lines (70 loc) · 3.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
//
// PageViewController.swift
// StackControllerExample
//
// Created by Blaine Fahey on 3/26/16.
// Copyright © 2016 Blaine Fahey. All rights reserved.
//
import UIKit
class PageViewController: UIPageViewController, UIPageViewControllerDataSource {
private func updateContentSize() {
preferredContentSize = CGSize(width: 0, height: 250.0)
}
override func viewDidLoad() {
super.viewDidLoad()
if #available(iOS 9.0, *) {
let pageControl = UIPageControl.appearanceWhenContainedInInstancesOfClasses([PageViewController.self])
pageControl.pageIndicatorTintColor = .lightGrayColor()
pageControl.currentPageIndicatorTintColor = .blackColor()
}
view.backgroundColor = .whiteColor()
dataSource = self
if let firstController = viewControllerAtIndex(0) {
setViewControllers([firstController], direction: .Forward, animated: false, completion: nil)
}
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
updateContentSize()
}
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
coordinator.animateAlongsideTransition(nil) { [unowned self] context in
self.updateContentSize()
}
}
var images: [String] {
return HelloImCallie.images
}
private func viewControllerAtIndex(index: Int) -> ImageViewController? {
guard index >= 0 && index < images.count else { return nil }
let imageVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("Image") as! ImageViewController
imageVC.pageIndex = index
imageVC.imageURLString = images[index]
return imageVC
}
func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int {
return images.count
}
func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int {
return 0
}
func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
if let imageVC = viewController as? ImageViewController {
var index = imageVC.pageIndex
guard index != 0 || index != NSNotFound else { return nil }
index -= 1
return viewControllerAtIndex(index)
}
return nil
}
func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
if let imageVC = viewController as? ImageViewController {
var index = imageVC.pageIndex
guard index != NSNotFound else { return nil }
index += 1
guard index < images.count else { return nil }
return viewControllerAtIndex(index)
}
return nil
}
}