msaps / Pageboy
- воскресенье, 12 марта 2017 г. в 03:12:18
Swift
A simple, highly informative page view controller.
Pageboy is a simple, highly informative page view controller.
Pageboy is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'Pageboy'
And run pod install
.
Pageboy requires iOS 9.0 or above.
1) Create an instance of a PageboyViewController
and provide it with a PageboyViewControllerDataSource
.
class PageViewController: PageBoyViewController, PageboyViewControllerDataSource {
override func viewDidLoad() {
super.viewDidLoad()
self.dataSource = self
}
}
2) Implement the PageboyViewControllerDataSource
functions.
func viewControllers(forPageboyViewController pageboyViewController: PageboyViewController) -> [UIViewController]? {
// return array of view controllers
return [viewController1, viewController2]
}
func defaultPageIndex(forPageboyViewController pageboyViewController: PageboyViewController) -> PageboyViewController.PageIndex? {
// use default index
return nil
}
3) Enjoy.
UIPageViewController
doesn't provide the most useful delegate methods for detecting where you are when paging; this is where Pageboy comes in. PageboyViewControllerDelegate
provides a number of functions for being able to detect where the page view controller is, and where it's headed.
Called when the page view controller is about to embark on a transition to a new page.
func pageboyViewController(_ pageboyViewController: PageboyViewController,
willScrollToPageAtIndex index: Int,
direction: PageboyViewController.NavigationDirection,
animated: Bool)
Called when the page view controller was scrolled to a relative position along the way transitioning to a new page. Also provided is the direction of the transition.
func pageboyViewController(_ pageboyViewController: PageboyViewController,
didScrollToPosition position: CGPoint,
direction: PageboyViewController.NavigationDirection)
Called when the page view controller did successfully complete a scroll transition to a page.
func pageboyViewController(_ pageboyViewController: PageboyViewController,
didScrollToPageAtIndex index: Int,
direction: PageboyViewController.NavigationDirection,
animated: Bool)
reloadPages
- Reload the view controllers in the page view controller. (Refreshes the data source).
public func reloadPages()
scrollToPage
- Scroll the page view controller to a new page programatically.
public func scrollToPage(_ pageIndex: PageIndex,
animated: Bool,
completion: PageTransitionCompletion? = nil)
isInfiniteScrollEnabled
: Bool
- Whether the page view controller should infinitely scroll between page limits (i.e. able to continuously scroll to first page from last).navigationOrientation
: UIPageViewControllerNavigationOrientation
- The orientation that the page view controller transitions on.viewControllers
: [UIViewController]?
- The view controllers that are displayed in the page view controller.currentViewController
: UIViewController?
- The view controller that the page view controller is currently at.currentIndex
: Int?
- The page index that the page view controller is currently at.currentPosition
: CGPoint?
- The relative page position that the page view controller is currently at.autoScroller
: PageboyAutoScroller
- Object that can be used for adding time-based auto scrolling behaviour.isScrollEnabled
: Bool
- Whether scroll is enabled on the page view controller.isDragging
: Bool
- Whether the page view controller is currently being dragged.isScrollingAnimated
: Bool
- Whether the page view controller is currently animating a scroll between pages.isUserInteractionEnabled
: Bool
- Whether user interaction is enabled on the page view controller.PageIndex
- The index of a page in the page view controller.
next
- The next page if available. (n+1)previous
- The previous page if available. (n-1)first
- The first page in the view controller array.last
- The last page in the view controller array.atIndex(index: Int)
- A custom specified index.NavigationDirection
- The direction that the page view controller travelled.
neutral
- No movementforward
- Moved in a positive direction (Towards n+1).reverse
- Moved in a negative direction (Towards n-1).Please feel free to contact me on Twitter.
Bug reports and pull requests are welcome on GitHub at https://github.com/MerrickSapsford/Pageboy.
The library is available as open source under the terms of the MIT License.