无限图片轮播器实现
无限图片轮播器
0, 此时如图,就是初始状态
(1) 假设一开始显示3张图片
(2) scrollview的contentSize是5个imageview.width
(3) scrollview的contentOffset是一个imageview.width
1,此时做左滑操作,会来一个新的imageview(4号)
2,此时,去缓存池取image view,如果有,直接使用,没有则创建imageview
3,当滚动停止后,如图:
此时要做三件事:
(1)把离开屏幕的imageview(1号)放进缓存池,并从scrollview中remove掉
(2)把在scrollview上的image view重新设置frame,让他们回到初始状态(scrollview的中间)
(3)设置scrollview的contentOffset=imageview.width,回到初始状态
回复状态后,如图:
4,重复以上3步骤(右滑同理)
以下为我代码实现的无限图片轮播器:(我已经上传到github)
https://github.com/MR-Zong/GenPros
原理如上,实现起来用viewController封装scrollView ,然后用kvo监听scrollView的contentOffset.注意要自己管理内存,我用了模仿tableCell内存池的机制。