如何在UIScrollView与PagingEnabled更改页面时更新UIPageControl?

And*_*rew 12 iphone objective-c ios

我如何制作它,以便当用户在UIScrollView中滚动到新页面时,UIPageControl会更新?

pic*_*ano 35

我之前使用过它,似乎效果很好.务必将UIScrollView.delegate设置为self.

#pragma mark - UIScrollViewDelegate methods

- (void)scrollViewDidEndDecelerating:(UIScrollView *)sender {
    uint page = sender.contentOffset.x / width;
    [self.pageControl setCurrentPage:page];
}
Run Code Online (Sandbox Code Playgroud)


Pie*_*nan 5

在您定义UIScrollView和UIPageControl的位置,您必须实现此方法:

- (void)scrollViewDidScroll:(UIScrollView *)_scrollView
{
    if (pageControlIsChangingPage)
        return;

    CGFloat pageWidth = _scrollView.frame.size.width;
    int page = floor((_scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
    pageControl.currentPage = page;
}
Run Code Online (Sandbox Code Playgroud)

还有这个 :

- (void)scrollViewDidEndDecelerating:(UIScrollView *)_scrollView 
{
    pageControlIsChangingPage = NO;
}
Run Code Online (Sandbox Code Playgroud)

在哪里pageControlIsChangingPage:

BOOL    pageControlIsChangingPage;
Run Code Online (Sandbox Code Playgroud)