UICollectionView: current index path for page control
You can get the current index by monitoring contentOffset in scrollViewDidScroll delegate
it will be something like this
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{ NSInteger currentIndex = self.collectionView.contentOffset.x / self.collectionView.frame.size.width;}
Get page via NSIndexPath from center of view.
Works even your page not equal to width of UICollectionView.
func scrollViewDidScroll(scrollView: UIScrollView) { let xPoint = scrollView.contentOffset.x + scrollView.frame.width / 2 let yPoint = scrollView.frame.height / 2 let center = CGPoint(x: xPoint, y: yPoint) if let ip = collectionView.indexPathForItemAtPoint(center) { self.pageControl.currentPage = ip.row }}
Definitely you need catch the visible item when the scroll movement is stopped. Use next code to do it.
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { if let indexPath = myCollectionView.indexPathsForVisibleItems.first { myPageControl.currentPage = indexPath.row }}