前言
花了两天时间终于把轮播器给封装完了,并提交到github,希望能方便大家使用,更希望亲们能去github给一颗宝贵的✨.
RSImageLoopView代码和demo:https://github.com/CoderRuoSu/RSImageLoopView/tree/master
首先感谢博客提供的部分思路,毕竟是在别人思想下进行优化和封装的,主要提高易用性和解决其定时器造成的循环引用
RSImageLoopView使用方法
1.创建图片数组,需要作为参数创建轮播器
2.导入并创建RSImageLoopView类,使用类方法进行创建,并加入到其父控件中
3.调用RSImageLoopView的addTarget方法,传入点击轮播器时需要执行的方法
4.实现点击后执行的方法,其中需要用到的当前图片索引,已经通过visibleImageIndex属性暴露给外界
5.在控制器的dealloc或者viewWillDisappear中,调用stopTimer方法,解决定时器引起的内存泄漏
详情见下面图片或者去github下载demo,如果有账号,别忘了给个赞哦😂
注意:一定要完成第五步,解决循环引用
循环轮播原理和RSImageLoopView的介绍
1.为什么可以使用collectionView实现循环轮播
- collectionView继承至scrollView,所以pagingEnabled属性可以达到轮播器的效果,但是scrollView不好实现循环轮播,也许可以只是因为复杂;
collectionView同样类似tableview有cell的重用机制,可以通过section更简单实现循环轮播的效果.
2.使用RSImageLoopView有什么好处
- 首先是基于collectionView的封装,cell的重用可以解决scrollView轮播器的离屏渲染,提高性能.
- 已经封装好,可以避免一些细节的琢磨
- 只需要添加一个类就可以实现,,耦合性低
- 没有定时器的循环引用,造成内存泄漏(这点主要对新手,或者不熟悉定时器的开发者来说)
3.RSImageLoopView介绍
- RSImageLoopView是继承自UIView,通过collectionView的cell重用,实现图片的循环轮播器
- 继承自UIView,使用方便,侵入性极低
- 接口少,使用浅显易懂
- 框架内部,各步骤层次分明,耦合低,利于自己修改,扩展性不错