我是XCode的新手,所以需要您的帮助。 我使用UIPageControl来显示我的CollectionView中当前可见的单元格。
问题在于如何获取可见的单元格:
我认为这个方法中
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
我应该更新当前页面,但是如何获取当前页面呢?
感谢你的帮助!:-)
我是XCode的新手,所以需要您的帮助。 我使用UIPageControl来显示我的CollectionView中当前可见的单元格。
问题在于如何获取可见的单元格:
我认为这个方法中
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
我应该更新当前页面,但是如何获取当前页面呢?
感谢你的帮助!:-)
页面可以定义为偏移量与大小之间的比率。
- (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];
}
- (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];
}