Swift 4 无限滚动轮播图(UICollectionView实现)

做为一个资深(自认为)iOS程序猿,会常常用到轮播图,可是老是感受本身实现要比直接用别人的要方便一点,而且有一些需求须要深度定制,因而想着本身封装一个能够定制化的轮播图库JCyclePictureViewgit

GitHub地址github

一、核心代码


数据处理

经过更改数据源来给用户一个假象,图片在无限滚动(其实一共只有3个 cell),默认显示第一个,右滑 index + 1, 左滑 index - 1,而后修改数据源,异步回到第一个cell(注意不能有动画)网络


滑动事件

二、可定制 cell


深度定制 cell

自定义 cell 的回调

本质为UICollectionView 的cellForItemAt 代理,需本身实现赋值逻辑异步


cellForItemAt

三、滚动方向


轮播图滚动方向

支持 上下左右 四种滚动方式动画


定时器事件

实际为 UICollectionView 用动画滚动到 第0个 cell 仍是第2个 cell3d


UICollectionView动画

四、PageControl

为实现可支持图片的PageControl,写了一个继承UIPageControl 的 JPageControl代理


JPageControl

红框内为核心代码,原理其实很简单,在每个 显示的点上面添加一张图片,而后根据 currentPage 属性修改图片cdn


JPageControl对齐方式

目前对齐方式支持 left、center、right,经过修改 frame 肯定位置blog

五、其它需求


init方法

pictures 能够以后设置 pictures支持本地、网络图片同时加载继承


轮播图标题

设置标题时 PageControl 自动右对齐


点击图片回调

index 从0 开始


自动播放时间

小于0.5秒不自动播放(若是不想自动播放能够 设为 0)


图片的ContentMode

设置图片的ContentMode

六、用法


用法

自定义 cell

若是使用过程当中出现问题,可随时 mr_banma@126.com 邮件联系。

ps:若是喜欢,记得 Star 一下,谢谢支持

源码

相关文章
相关标签/搜索