UIPageControl setCurrentPage - UICollectionView iOS6 UIPageControl setCurrentPage - UICollectionView iOS6。

4

我是XCode的新手,所以需要您的帮助。 我使用UIPageControl来显示我的CollectionView中当前可见的单元格。

问题在于如何获取可见的单元格:

我认为这个方法中

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

我应该更新当前页面,但是如何获取当前页面呢?

感谢你的帮助!:-)

2个回答

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;
}

有几种方法可以触发这个功能。你可以在每次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];
}

非常感谢您的回复。当我向前移动时它可以工作,但是当我再向后移动一个单元格时它就无法改变回来了。我使用了水平页面。我做错了什么? - Daniel Kappacher
@DanielKappacher,我的错 - 页面是偏移量的函数而不是边界。我不知道我在想什么,我已经写了这个方法大约100次了。现在已经修复了。抱歉。 - danh
谢谢你的回答。现在当我在NSLog中输入页面(horizontalPage)时,每次滚动时它都会给出正确的数字。但是PageControl只有在向前滚动时才会更改。我使用“[self.vimpPageControl setCurrentPage:page];”来设置currentPage。我有什么遗漏吗? - Daniel Kappacher
[self.vimpPageControl setCurrentPage:page]; 我需要在scrollViewDidEndDeceleating方法中也放置这个方法吗?谢谢! - Daniel Kappacher
1
@DanielKappacher - 有几件事情需要注意...1) 我会将我的回答更新为零基础(添加一个数更好地显示用户页码为整数),2) 有几种触发此操作的方法。我也会在我的回答中说明。 - danh

0
如果您使用分页器,那么这段代码应该会对您有所帮助:
- (IBAction)pagerValueChanged 
{
    NSData* imgData = [images objectAtIndex:pager.currentPage];
    UIImage* img = [[UIImage alloc]initWithData:imgData];
    imageView.image = img;

    //NSLog(@"img width: %f, img height: %f", img.size.width, img.size.height);

    [img release];
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接