以10组为例,以第5组为中间,描述中的“第1个”代表第0个item
具体代码请参考:https://github.com/shimenyimeng/-Unlimited-image-rotation
1. 请求数据,定义数组保存数据
2. 自定义轮播视图loopView
定义方法- (instancetype)initWithImages:(NSArray *)images;把images传过去,在此方法中设置代理、注册cell
数据源方法返回10组
3. 自定义flowLayout
设置一系列与cell布局有关的代码
同时也可以在这里设置flowLayout附属的collectionView的属性
4. 初步实现10组之后,需要一开始跳到第5组第1个,在loopView类中必须保证数据源方法走完之后再跳,所以可以使用异步线程到主队列,这样可以保 证跳到第5组第1个之前,数据源方法已经走完
4. 自定义cell,定义image属性,重写setter方法,在setter方法中给cell的imageView赋值
5. 把pageControl定义在loopView,添加pageControl到控制器的view上
scrollViewDidScroll方法中设置loopView的pageControl,
6. 把定时器定义在loopView,每隔一秒row++,当row==3时,section++,由于在scrollViewDidScroll方法 中已经实现了无限轮播,所以这里的section 会自动调整,让它先滚到第6组第1个,然后无动画的滚到第5组第1个
7. 在scrollViewDidEndDecelerating停止减速方法中,判断section是否是4,如果到了第4组,就让它滚动到第5组最后一个。
8. 开始拖拽时暂停定时器,停止减速后scrollViewDidEndDecelerating,开启定时器方法中开启定时器(由于自动滚动也会走这个方法,可以加一个判 断,如果self.timer == nil才开启定时器)