iOS换一种思路写一个无限轮播的滚动视图

[复制链接]
396 1
不循环设置元数据,只用3个cell,连续滚动一辈子滚不到头???

哈哈哈,不开玩笑,你值得拥有
写这篇博客已经距离我当时写轮子差不多有一个月时间了,也完善了很多,基本是没有bug的,如果有,不妨留言,喜欢的话,劳烦各位点个赞,不喜欢的,不妨看看思路,提提意见




1. 以前的思路使用scrollView

基本是以下的方法
a,使用scrollView放轮播图,scroll分页放置图片可以实现左右轮播
b,在头尾各添加两个图片,然后在滑动到最后一张的时候处理滑动
例如123一共3张图片
加两个形成31231一共5张图片
c,当滑动到最后一张时候如何再往右滑动,瞬间无动画切换到起始位置的呢一张图,第一张往左滑动也同样处理
d,处理手动和定时器
scroll实现轮播图链接
2.最近流行的使用collection

使用collectionView可以很方便的创建轮播图,并且利用collectionViewCell的复用,很方便的管理,原理也很简单
a,把轮播图的元数据扩大,123123123...123123123
b,创建视图把初始位置设置为中间点
c,处理滚动到头时候
如此基本可以解决问题,如果害怕滑动到头一般设置为9999
这里一般会优化数据源,
使用123,在读取时候循环读取
3.自己的想法和优雅的点子

想法1,数据源的读取并不优雅

数据源是个很明显的双向循环,这个结构跟以前"听说"的双向链表那么的契合,为什么不使用双向链表作为数据源呢
想法2,collection设置99999真的的好么,表示我是一个崇尚优雅的猿

本来就是轮播嘛,滑动的时候怎么左右滚,划,总不会需要超过3个的cell吧
Then->

假如我有一个链表,假如我只使用3个cell,那么我可以写成一个循环滚动的轮播图吗
原理应该是

每次滑动结束之后就回到中间的那一张
左划3个cell的数据源整体向左,右划类推
4,想法是不够的,轮子才是我想要的

循环链表??...面向对象大发好

设置每一个数据
@interface SXLinkList : NSObject@property(nonatomic, assign) NSInteger index;@property(nonatomic, strong) id data;@property(nonatomic, strong) SXLinkList *next;@property(nonatomic, strong) SXLinkList *last;@end把数据联系起来,用for循环创建,然后把头和尾接起来
+ (SXLinkList *)createLinkListWithURLsArrayNSArray *)urlArr {//第一只 SXLinkList *head = [[SXLinkList alloc] init]; head.data = [urlArr firstObject]; head.index = 0; SXLinkList *ptr = head; for (int i=1; i

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

举报 使用道具

回复

1 个评论

永盛成财务  注册会员  发表于 2019-3-13 15:06:06  | 显示全部楼层
感谢楼主分享

举报 使用道具

回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

ios.irunthink.com
搜索
热搜: iOS swift 下拉刷新

图文热点

更多

开发教程

更多

客服中心

400-800 周一至周日 9:30-17:30 仅收市话费

关注我们

  • 微信扫描
  • 关注微信
关于我们
关于我们
友情链接
联系我们
帮助中心
精贴推荐
源码上传
注册登录
服务支持
资源下载
关注我们
官方微博
官方空间
快速回复 返回顶部 返回列表