While UIPageViewController comes with its own UIPageControl, its often useful to add your own, so you have greater control over its placement. Also, sometimes you don't want a full UIPageViewController, but you just want a UIScrollView with paging enabled.
UIScrollViewDelegate
protocol to your ViewController.
viewDidLoad
method, set the scroll view content size and scroll view delegate. Your content size will vary according to how big your scrollable area is.scrollView.contentSize = CGSize(width: 960, height: 568)
scrollView.delegate = self
In the Storyboard, add a UIPageControl to the view controller. Often, you will place it on top of, not inside of, the UIScrollView.
Register for the UIScrollView scroll event, for example, you can update the UIPageControl every time the UIScrollView stops moving.
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView!) {
// Get the current page based on the scroll offset
var page : Int = Int(round(scrollView.contentOffset.x / 320))
// Set the current page, so the dots will update
pageControl.currentPage = page
}
You can configure the number of dots as well as the color of the unselected or selected dots.
Number of dots to display: You can set the number of pages for the page control to show as dots. If I had four pages, I would set...
pageControl.numberOfPages = 4
Color of current page dot:
pageControl.currentPageIndicatorTintColor = UIColor.red
For more details, see Registering for Scroll Events.