Search code examples
iosuipageviewcontrolleruipagecontrol

How to change position of UIPageControl in iOS >=8.0?


I have a simple UIPageViewController which displays the default UIPageControl at the bottom of the pages. I wonder if it's possible to modify the position of the UIPageControl, e.g. to be on top of the screen instead of the bottom. I've been looking around and only found old discussions that say I need to create my own UIPageControl. Is this thing simpler with iOS8 and 9? Thanks.


Solution

  • Yes, you can add custom page controller for that.

    self.pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, self.view.frame.size.height - 50, self.view.frame.size.width, 50)]; // your position
    
    [self.view addSubview: self.pageControl];
    

    then remove

    - (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController
    

    and

    - (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController
    

    Then add another delegate method:

    - (void)pageViewController:(UIPageViewController *)pageViewController willTransitionToViewControllers:(NSArray<UIViewController *> *)pendingViewControllers
     {
         PageContentViewController *pageContentView = (PageContentViewController*) pendingViewControllers[0];
         self.pageControl.currentPage = pageContentView.pageIndex;
     }