Swift 4 无限滚动轮播图(UICollectionView实现)
作为一个资深(自认为)iOS程序猿,会经常用到轮播图,但是总是感觉自己实现要比直接用别人的要方便一点,并且有一些需求需要深度定制,于是想着自己封装一个可以定制化的轮播图库JCyclePictureView。
GitHub地址
1、核心代码
通过更改数据源来给用户一个假象,图片在无限滚动(其实一共只有3个 cell),默认显示第一个,右滑 index + 1, 左滑 index - 1,然后修改数据源,异步回到第一个cell(注意不能有动画)
2、可定制 cell
本质为UICollectionView 的cellForItemAt 代理,需自己实现赋值逻辑
3、滚动方向
支持 上下左右 四种滚动方式
实际为 UICollectionView 用动画滚动到 第0个 cell 还是第2个 cell
4、PageControl
为实现可支持图片的PageControl,写了一个继承UIPageControl 的 JPageControl
红框内为核心代码,原理其实很简单,在每一个 显示的点上面添加一张图片,然后根据 currentPage 属性修改图片
目前对齐方式支持 left、center、right,通过修改 frame 确定位置
5、其它需求
pictures 可以之后设置 pictures支持本地、网络图片同时加载
设置标题时 PageControl 自动右对齐
index 从0 开始
小于0.5秒不自动播放(如果不想自动播放可以 设为 0)
设置图片的ContentMode
6、用法
如果使用过程中出现问题,可随时 mr_banma@126.com 邮件联系。
ps:如果喜欢,记得 Star 一下,谢谢支持
源码
转载于:https://juejin.im/post/5a3a159a5188257d38441c31
Swift 4 无限滚动轮播图(UICollectionView实现)相关推荐
- CSS3实现列表无限滚动/轮播
使用CSS3实现列表的无限滚动/轮播 效果预览 思路 将当前列表滚动至最后一项的末尾,然后瞬间切换回第一项 问题点 用什么方式实现无限轮播 这个问题就是列表滚动到最后时底部会留白(有多余空间)如何处理 ...
- 原生JS实现PC端无缝滚动轮播图、匀速轮播图、匀速动画
offset家族的了解 1.offsetHeight:元素的offsetHeight是一种元素CSS高度的衡量标准,包括元素的边框.内边距和元素的水平滚动条(如果存在且渲染的话),不包含:before ...
- JS经典案例-无缝滚动轮播图(纯JS)
滚动轮播图 在JS初级阶段,轮播图是最基础最经典的案例,而相比于渐变轮播图,无缝滚动轮播图又要更难一点.渐变轮播图仅需要使用到点击事件.定时器等,而无缝滚动轮播图则需要考虑到 第一张>最后一张, ...
- 滚动轮播图+滚动轮播图定时器的添加(还原lol首页的轮播图)
滚动轮播图+滚动轮播图定时器的添加(还原lol首页的轮播图) 每一步都有详细的注释: <!DOCTYPE html> <html lang="en"> &l ...
- html5图片无限循环播放,原生js实现无限循环轮播图效果
知识要点 1.实现无限循环的原理: 以偏移的距离来判断是否跳回第一张和最后一张 也可以利用循环判断图片的当前索引值 var newLeft=parseInt(list.style.left)+offs ...
- 一种无限循环轮播图的实现原理
本文来自 http://www.jianshu.com/p/ef03ec7f23b2 轮播实现步骤 接下来,笔者将从各方面逐一分析 层级结构 最底层是一个UIView,上面有一个UIScrollVie ...
- 原生js实现触摸滚动轮播图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- js原生选项卡(自动播放无缝滚动轮播图)二
今天分享一下自动播放轮播图,自动播放轮播图是在昨天分享的轮播图的基础上添加了定时器,用定时器控制图片的自动切换,函数中首先封装一个方向的自动播放工能的小函数,这个函数中添加定时器,定时器中可以放向右走 ...
- JavaScript+HTML+CSS 无缝滚动轮播图的两种方式
第一种方式 在轮播图最后添加第一张,一张重复的图片. 点击前一张,到了第一张,将父级oList移动到最后一张(也就是添加的重复的第一张),在进行后续动画. 点击下一张,到了最后一张(也就是添加的重复的 ...
最新文章
- python读取文件读不出来-python文件读取失败怎么处理
- arm linux 内核启动,Linux(ARM)内核启动地址
- VTK修炼之道7_三维场景基本要素:光照
- Mathtype全文公式大小一致调整
- php让代码重新运行一次,脚本运行时是否可以动态重新加载PHP代码?
- Linux下网卡绑定模式
- Python+OpenCV:图像轮廓
- AD调出LM358\393元器件不同部分A和B的part
- python功能二维表合并,一维表内嵌元祖合并以及取交集,并集,差集
- 基于javaweb+springboot的学生学科竞赛管理管理系统设计和实现(java+springboot+ssm+maven)
- QT中双击mdiArea区域打开文件(监听双击事件)
- C#强密匙加密文件.snk
- springboot微信点餐系统项目设计
- python负数的处理
- ODCC2017 浪潮展示多款JDM创新成果
- 关于世博会的一些遐想!
- 盘点 2021 年十大网络安全事件
- 基于51单片机超声波的停车场车位管理系统proteus仿真原理图PCB
- php 正则手机 w3c,最新手机号码正则表达式(php版)
- 安装MATLAB时应如何选择产品组件