1,概述
这里我先说一下自己所说的"思路"可能跟大家理解的"思路"不大一样; 什么定义啥的太宽泛了, 俺也不大会概括, 这里就举这个例子来说明吧, 当然后面会说我的推荐:
比如说到"轮播图的两种实现思路", 大家想到的答案可能是"轮播图的两种实现思路分别是通过UICollectionView和UIScrollView来实现"这个;
但是我这里说的两个思路不是UICollectionView和UIScrollView的区别, 而是具体实现过程中轮播方式的不同.
好, 区别暂时说这么多先, 反正现在也是懵逼, 待会儿往下看就知道具体区别在哪了.
2,思路的简单介绍
思路A:
思路A用一句话来总结的话---"图片的轮播";
看下面的思路就知道为什么这么说了.
举个栗子:
假如有标号为0-3的四张图要轮播, 那么在起始的时候, 显示的是第0张图:
当手指向左滑之后, 此时屏幕显示的是"图1"的, 如图:
此时,后台需要做的事情有:
- 将middle的图片设为"图1", 然后将scrollView的偏移量设置成初始状态(注意,不能开启动画, 否则露馅);
- 将left的图片设置成"图0", 将right的图片设置成"图2";
然后就变成了这样的:
当然, 要上线无线轮播的话, 在滚动到头尾的时候肯定是需要处理一下的, 需要用到模运算%.
思路B:
思路B用一句话啦总结的话--"图片框的轮播";
同样看思路就知道了
还是举个栗子:
还是标号为0-3的四张图来轮播, 则先把四张图的首尾两张分别复制多一张, 排在各自的首尾, 图中依次排开的图片框标号分别问inde = 0~5; 如图:
当处在上图所示的位置, 并且向右滑动之后, 显示的是"图3"(也就是index = 0);
这时候, 后台需要做的事情是:
悄悄地将index = 0 变成 index = 4;
同样的, 当向左滑到最右侧的"图3"的时候, 后台需要做的是:
悄悄地将index = 5 变成 index = 1;
通过这种思路实现无线轮播.
3,两种思路的优劣对比
其实两种思路差别并不是很大, 主要的优劣是这样的:
思路A :
优点
: 只需要创建三个图片框, 占用内存少;
缺点
: 实现思路稍微复杂一点, 而且代码比较多; 在实际使用里面, 当网速比较慢的时候, 首次加载图片变慢的话可能会出现滚动灰色背景的画面.
思路B :
优点
: 实现思路比较简单, 而且代码量少, 容易理解一点, 而且相对于A,网速慢的情况下出现轮播灰色背景框的几率少一点;
缺点
: 创建比较多的图片框, 占用内存比较多一点.
4,我的推荐
推荐思路B; 为什么呢, 因为其实B占用的内存也多不到哪里去, 但是思路啊代码啊各方面都要比A好很多.