Progress of UIPageViewController

Eric1101000101 picture Eric1101000101 · Mar 22, 2014 · Viewed 9.5k times · Source

I would like to receive updates from the uipageviewcontroller during the page scrolling process. I want to know the transitionProgress in %. (This value should update when the user move the finger in order to get to another page). I'm interested in the animation progress from one page to another, not the progress through the total number of pages.

What I have found so far:

  • There is a class called UICollectionViewTransitionLayout that have the property corresponding to what I am looking for, "transitionProgress". Probably uipageviewcontroller implement this method somehow?

  • I can call the following method on the uipagecontroller but I only get 0 as result!

    CGFloat percentComplete = [self.pageViewController.transitionCoordinator percentComplete];

Answer

Appygix picture Appygix · May 22, 2016

in SWIFT to copy paste ;) works perfect for me

extension UIPageViewController: UIScrollViewDelegate {

    public override func viewDidLoad() {
        super.viewDidLoad()

        for subview in view.subviews {
            if let scrollView = subview as? UIScrollView {
                scrollView.delegate = self
            }
        }
    }

   public func scrollViewDidScroll(_ scrollView: UIScrollView) {
       let point = scrollView.contentOffset
       var percentComplete: CGFloat
       percentComplete = abs(point.x - view.frame.size.width)/view.frame.size.width
       print("percentComplete: ",percentComplete)
   }
}