4

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

问题是获取可见单元格:

我认为在这种方法中

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

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

谢谢你的帮助!:-)

4

2 回答 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];
}
于 2013-04-02T14:33:58.840 回答
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];
}
于 2013-04-02T12:33:56.630 回答