如何在 UICollectionView 中循环一组单元格?
Posted
技术标签:
【中文标题】如何在 UICollectionView 中循环一组单元格?【英文标题】:How to looping a set of cells in UICollectionView? 【发布时间】:2014-10-31 08:20:45 【问题描述】:我不知道这个主题之前是否问过,但在问这个简单的问题之前我做了一些搜索,比如“UICollectionView 循环单元”“UIColloectionView 无限循环”。
如果帖子重复,我很抱歉......
我的应用程序中有一个水平集合视图作为滑块,将显示 5 个图像,当用户滚动到末尾(第五个项目)并向右滑动并移动到第一个单元格时,如何设置功能?另外,如果用户滚动第一项并向左滑动,它会显示第五项吗?谢谢。
SDK:ios 7
非常感谢~
【问题讨论】:
看看this question - 它会处理向前滚动,虽然可能不是向后滚动(虽然应该不难) 【参考方案1】:我写了一个愚蠢的程序来控制它
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
CGFloat pageWidth = _sliderCV.frame.size.width;
self.pageControl.currentPage = _sliderCV.contentOffset.x / pageWidth;
NSLog(@"%f", _sliderCV.contentOffset.x);
CGFloat firstSlide = 0.f;
CGFloat lastSlide = pageWidth * 4;
NSLog(@"contentOffset = %f, firstSlide = %f, SelFirstCount = %li",_sliderCV.contentOffset.x, firstSlide, (long)selFirstCount);
if (_sliderCV.contentOffset.x == firstSlide)
if (selFirstCount == 0)
selFirstCount += 1 ;
NSLog(@"%li", (long)selFirstCount);
else
NSLog(@"Move to Last");
[_sliderCV setContentOffset:CGPointMake(lastSlide, 0) animated:YES];
selFirstCount = 0;
self.pageControl.currentPage = 4;
selLastCount = 1;
else if (_sliderCV.contentOffset.x == lastSlide)
if (selLastCount == 0)
selLastCount += 1;
else
[_sliderCV setContentOffset:CGPointMake(firstSlide,0) animated:YES];
selLastCount = 0;
self.pageControl.currentPage = 0;
selFirstCount = 1;
else
NSLog(@"Clear");
selFirstCount = 0;
selLastCount = 0;
【讨论】:
以上是关于如何在 UICollectionView 中循环一组单元格?的主要内容,如果未能解决你的问题,请参考以下文章
UICollectionView 作为 UITableView 子视图流布局循环
为啥我的 UICollectionView 无法访问我在 for 循环中创建的数组 - 致命错误:索引超出范围
如何在 UICollectionViewCell 中添加 UICollectionView?
如何使用 UIViewControllerRepresentable 在 SwiftUI 中呈现 UICollectionView