很早就写了这么一个框架,但一直没找到时间来推广。
照旧先放上Github的地址:
https://github.com/watermelon520/LPAutoScrollView
特色
- 支持竖直以及水平自动轮播
- 没有侵入性,使用自定义的view
- 自定的view支持纯代码或者xib
- 采用类似UITableView的方式构建框架
- view重用机制的无限轮播,性能优异
- 针对常用的image轮播,加入LPImageContentView直接使用
框架主要的核心代码可以直接下载下来自行研究,网上关于无限滚动的教程也很多,只是实现方式有些许不同,但是大体一样。所以我在这里就稍微简单的说一下实现方式。
原理
利用UIScrollView
的滚动机制,让UIScrollView
的contentSize
和frame
的高一样,宽度为三倍。
然后往UIScrollView
里加入三个View
,依次排开,把UIScrollView
的contentSize
铺满。
如图所示:
上方深色为UIScrollView
,浅色为contentSize
范围,
下方1、2、3分别是3个已经加入UIScrollView
的view
。
UIScrollView
的默认偏移量为一个宽度
当前展示的2号view
假设我们需要展示的数据数组为@[a, b, c, d, e, f]
,那么现在2号view显示的是b
当我们滑动UIScrollView
,无论左滑还是右滑,即将出现的view要显示数据由2号view的数据决定,如果右滑,那么3号view显示c,如果左滑,1号view显示a。
现在开始滑动,如下图所示:
屏幕快照 2017-07-05 21.47.32.pngUIScrollView
的偏移量为2个宽度
当前展示的是3号view
,展示的是c
核心思想
这时候我们需要做几件事来让UIScrollView
可以继续滚动,这也是无限滚动的核心思想所在。
- 使2号图展示3号图的数据
- 并且改变UIScrollView的偏移为1个宽度
这样用户看起来界面上什么改变也没有发生,但是我们把整个位置都给替换了。
不要吝啬你的喜欢,框架好用请Star。
如果有不懂的或者想要技术交流都可以私信我,谢谢大家。
网友评论