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

时间:2011-06-10 17:33:01

标签: ios objective-c iphone

如何使用当用户滚动到UIScrollView中的新页面时,UIPageControl会更新?

3 个答案:

答案 0 :(得分:35)

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

#pragma mark - UIScrollViewDelegate methods

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

答案 1 :(得分: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;
}

和这一个:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)_scrollView 
{
    pageControlIsChangingPage = NO;
}

其中pageControlIsChangingPage是:

BOOL    pageControlIsChangingPage;

答案 2 :(得分:2)

以下是Swift的这个答案的更新:

func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
            pageControl.currentPage = Int(myScrollView.contentOffset.x) / Int(myScrollView.frame.width)
        }