无限轮播实现思路(封装)

来源:互联网 发布:hiv专用交友软件 编辑:程序博客网 时间:2024/06/06 16:38

以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方法中给cellimageView赋值

5. pageControl定义在loopView,添加pageControl到控制器的view

   scrollViewDidScroll方法中设置loopViewpageControl

6. 把定时器定义在loopView,每隔一秒row++,当row==3时,section++,由于在scrollViewDidScroll方法    中已经实现了无限轮播,所以这里的section      会自动调整,让它先滚到第6组第1个,然后无动画的滚到第5组第1

7. 在scrollViewDidEndDecelerating停止减速方法中,判断section是否是4,如果到了第4组,就让它滚动到第5组最后一个。

8. 开始拖拽时暂停定时器,停止减速后scrollViewDidEndDecelerating,开启定时器方法中开启定时器(由于自动滚动也会走这个方法,可以加一个判           断,如果self.timer == nil才开启定时器)


1 0
原创粉丝点击