你知道一种方法来检测用户何时滚动到UICollectionView的结尾(或开头)(为了加载新内容)。由于UICollectionView水平滚动而不是垂直滚动,我对滚动到顶部/底部而不是最左边/最右边不感兴趣。
我到目前为止找到的唯一方法是子类化UICollectionView,然后将视图控制器注册为委托,通知集合视图willLayoutSubviews
何时并相应地执行计算。
但是让我说我不想继承UICollectionView,有没有办法检测滚动到UICollectionView的结束/开头?
编辑:
因为UICollectionView继承自UIScrollView
,所以我可以使用它的委托方法。如何使用水平滚动?
谢谢
答案 0 :(得分:4)
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGFloat offsetX = scrollView.contentOffset.x;
CGFloat contentWidth = scrollView.frame.size.width;
NSLog(@"offset X %.0f", offsetX);
// If your UICollectionView has 3 cell, the contentWidth is 320,
// When you scroll from beginning to end of the UICollectionView, it will print:
// offset X 0
// offset X 1
// offset X 2
// ......
// offset X 320
// offset X 640
}
答案 1 :(得分:2)
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if ([scrollView isKindOfClass:[UICollectionView class]] == YES) {
CGFloat threshold = 100.0 ;
CGFloat contentOffset = scrollView.contentOffset.x;
CGFloat maximumOffset = scrollView.contentSize.width - scrollView.frame.size.width;
if ((maximumOffset - contentOffset <= threshold) && (maximumOffset - contentOffset != -5.0) ){
//Your code
}
}
}