-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Description
首先, 轮播图的问题不在于如何取数据,
而在于 Cocoa Touch 中没有直接实现此功能的 UI 控件, 只能用 ScrollView 或者 CollectionView 来模拟这种轮播效果.
其次, 用双向链表和用数组, 没多大差别,
并且, 严格来讲, 这里使用数组更合适. 首先你得明确, 链表之于数组, 有何优势? 链表的最大的优势在于, 在较大数据集中增删元素的效率比数组高, 但是链表的这个优势在轮播图里有体现吗...况且数组可以根据索引来访问, 用在轮播图里没有一点劣势.
另外, 博文中提到的使用 collectionView 实现轮播需要把数据源设置成 9999 是不切实际的,
那如果超过了 9999 怎么办? 实际上数据源设置成 3 * n 即可, 即 123123123 循环, 并且实际上只需要访问 31231. 至于数组大小, 保持原大小即可, 取元素时, 通过取模即可获取当前元素的索引. UI 方面, collectionViewCell 能复用, 所以没有内存问题.
最后, 目前本项目的 demo 中貌似只支持三个轮播,
加到4个之后, 如果快速滑动, 就会在1,3或者2,4之间跳动, 而把另外两个跳过了...
写这么长的缘由:
我也一直很想知道轮播图有没有更优雅的解决方法, 今天恰在 https://xiaozhuanlan.com/topic/1025497836 看到了作者提到了用双向链表实现轮播图, 看到标题后确实觉得很角度很独特, 但看了实现之后, 觉得还是没有解决问题, 就简单做了一下问题分析, 如有不合逻辑之处, 还请大佬指出.
Metadata
Metadata
Assignees
Labels
No labels