UICollectionView,paging和clipsToBounds

tap*_*api 3 objective-c uikit ios uicollectionview

我有一个集合视图,其内容水平滚动,需要在设备的整个宽度上可见.集合视图已clipsToBounds设置为NO,并且框架600宽度pagingEnabled设置为YES.

我正在寻找的效果是内容似乎在另一个视图下滑动,但是当单元格在集合视图的框架之外滚动时,它将被删除,以便可以重复使用.

任何人都知道如何让这个工作,或达到类似的效果?

Sor*_*lou 6

以下是我发现获得此效果的最简单方法.它涉及您的集合视图和额外的秘密滚动视图.

设置您的集合视图

  • 设置集合视图及其所有数据源方法.
  • 构建集合视图; 它应该跨越您想要可见的整个宽度.
  • 设置集合视图contentInset:

    _collectionView.contentInset = UIEdgeInsetsMake(0, (self.view.frame.size.width-pageSize)/2, 0, (self.view.frame.size.width-pageSize)/2);
    
    Run Code Online (Sandbox Code Playgroud)

这有助于正确抵消细胞.

设置您的秘密滚动视图

  • 创建一个滚动视图,将其放在任何您喜欢的位置.hidden如果您愿意,可以将其设置为.
  • 将scrollview的边界大小设置为所需的页面大小.
  • 将自己设置为scrollview的委托.
  • 将其设置contentSize为集合视图的预期内容大小.

移动手势识别器

  • 将秘密scrollview的手势识别器添加到集合视图,并禁用集合视图的手势识别器:

    [_collectionView addGestureRecognizer:_secretScrollView.panGestureRecognizer];
    _collectionView.panGestureRecognizer.enabled = NO;
    
    Run Code Online (Sandbox Code Playgroud)

代表

- (void) scrollViewDidScroll:(UIScrollView *)scrollView {
    CGPoint contentOffset = scrollView.contentOffset;
    contentOffset.x = contentOffset.x - _collectionView.contentInset.left;
    _collectionView.contentOffset = contentOffset;
}
Run Code Online (Sandbox Code Playgroud)

滚动视图移动时,获取其偏移量并将其设置为集合视图的偏移量.

我在这里写了这篇博文,请点击此链接获取更新:http://khanlou.com/2013/04/paging-a-overflowing-collection-view/