UIPageControl setCurrentPage - UICollectionView iOS6

Dan*_*her 4 iphone xcode scrollview pagecontrol ios6

我是XCode的新手,所以我需要你的帮助.我使用UIPageControl来显示我的集合View中的哪个单元格现在可见.

问题是得到可见的细胞:

我想在这个方法中

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
Run Code Online (Sandbox Code Playgroud)

我应该更新当前页面.但是如何获得当前的页面?

谢谢你的帮助!:-)

dan*_*anh 11

页面可以定义为偏移量和大小之间的比率.

- (NSInteger)horizontalPageNumber:(UIScrollView *)scrollView {
    CGPoint contentOffset = scrollView.contentOffset;
    CGSize viewSize = scrollView.bounds.size;

    NSInteger horizontalPage = MAX(0.0, contentOffset.x / viewSize.width);

    // Here's how vertical would work...
    //NSInteger verticalPage = MAX(0.0, contentOffset.y / viewSize.height);

    return horizontalPage;
}
Run Code Online (Sandbox Code Playgroud)

有几种方法可以触发这种情况.你可以在每个scrollViewDidScroll上完成工作,但这有点过分了.更好的方法是在拖动完成并且没有进一步减速或减速结束时运行它,如下所示:

-(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];
}
Run Code Online (Sandbox Code Playgroud)