A page can be defined as the relationship between offset and size.
- (NSInteger)horizontalPageNumber:(UIScrollView *)scrollView { CGPoint contentOffset = scrollView.contentOffset; CGSize viewSize = scrollView.bounds.size; NSInteger horizontalPage = MAX(0.0, contentOffset.x / viewSize.width);
There are several ways to cause this. You can do work on each scrollViewDidScroll, but this is a bit redundant. It is best to start it when the drag is completed and further braking does not stop or when braking ends as follows:
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { self.page.currentPage = [self horizontalPageNumber:scrollView]; } - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { if (!decelerate) self.page.currentPage = [self horizontalPageNumber:scrollView]; }
source share