ios 无限轮播banner 源码阅读

写这篇博客的起因是这样子的,看了 git上一个模仿半塘 app的代码,pod中有一些源码,没看过的就单个弄出来,记个笔记,注释就直接在代码里了,直接截图了……


广告banner的方式在app中算是比较常见的推广,拉留存的方式。如图

ios 无限轮播banner 源码阅读_第1张图片
YY视听 的广告banner

当然,线上这个广告banner做的比较low,但是无伤大雅。


代码

然后外加一个定时器。定时器也有就是单纯的NSTimer。。

很low很朴素的实现。

今天突然发现一个比较有趣的实现。使用UICollectionView.支持pod方式

pod'SDCycleScrollView','~> 1.3'

目录结构如图

ios 无限轮播banner 源码阅读_第2张图片
目录结构

UIView+SDExtension UIView 的扩展,建议如果项目中使用这个组件,直接拖入代码进来。这个类可以删掉。每个项目几乎都有类似的扩展,没有必要有太多的相似代码

主要的类就是SDCycleScrollView 和 TAPageControl 前者实现了轮播的功能,后者实现了自定义UIPageControl。


ios 无限轮播banner 源码阅读_第3张图片
主要的方法
ios 无限轮播banner 源码阅读_第4张图片
设置图片路径的过程


这里比较巧妙。图片个数 *100,比如5个banner就500个。但是并不创建真正的模型。在reload的时候进行设置就ok



ios 无限轮播banner 源码阅读_第5张图片
相关重要函数


long itemIndex = indexPath.item%self.imagePathsGroup.count;//index对图片的个数取余数,结果刚好就是要展示的那张图片

在ScrollView的代理中,同样适用取余数的技巧设置pageControl的当前位置,如图:注释

ios 无限轮播banner 源码阅读_第6张图片

最开始的位置定位:直接放到中间的位置。如果有3 张图片要轮播,则是在 3 * 100/2  偏移量是149的位置上

如下图所示:


ios 无限轮播banner 源码阅读_第7张图片
设置初始位置的代码


第一次写阅读源码的博客,因为直接就在Xcode 里面写好注释了,所以就直接截图了……囧。有疑问我们再讨论。以后还会坚持写阅读源码的笔记。

你可能感兴趣的:(ios 无限轮播banner 源码阅读)