关于ios的瀑布流类似cell的重用
先贴个聊天出来,算是个开头吧,回头看看有时间写出来
Stefan 16:17:23
瀑布流网上很多,但是好像都没有每个cell的删除操作
Stefan 16:19:35
能指点下嘛
从一开始 16:19:45
关于这个我因为是一个POC,所以没有做,大体的思路其实是这样的: 如果瀑布流分成三列的话,利用三个数组保存各自一列的cell,依靠此数组计算出当前队列最前端(0)的y的数值 / 最后端的数值,在viewDidScroll时候,通过判断contentOffset,判断是否将当前的某几个cell加入或者移除,放入dequeue队列
Stefan 16:20:10
我做的是3列的效果
从一开始 16:20:22
基本的话,每个单列有点像是特异化table重用效果
从一开始 16:22:07
当然只是一个思路,这样做的话可能在model上也会变成存在三组数据,实现和三列cell的对应,这样应该会好点,我只实践过table类的,瀑布流的具体没有涉及
从一开始 16:22:15
希望对你有帮助
Stefan 16:22:59
嗯,这个比较纠结
从一开始 16:24:16
如果实现的是model分成三组数据的话,应该是把这个看成是瀑布流 = 三个table的集合体,这样变换问题应该是可以的
Stefan 16:24:17
主要是我没有什么思路
从一开始 16:24:42
先从table的重用开始看
从一开始 16:24:55
3个table=一个瀑布流
Stefan 16:25:22
要不我把东西发给你,你看看
从一开始 16:25:32
但是你应该先把网上的一些瀑布流的基本东西理解清楚,这个最重要
从一开始 16:26:30
- - 只能是谈谈思路,具体没时间饿
Stefan 16:26:44
额额,好吧
从一开始 16:27:06
关于queue的话。。 你使用github吗?
Stefan 16:27:30
嗯,用
从一开始 16:27:33
去搜索一个关于bookshelf的,那个有个类似table的重用,可以参考一下
Stefan 16:27:58
好的,谢谢你了
思考:
首先考虑只可以使用重用吗? 未必,最简单的方法其实时在每一个cell超出contentOffset的时候,将图片卸载掉,进入时重新加载。
想要实现更精细? 那么此时才会涉及重用
1.首先有个问题必须要考虑清楚,具体是为什么实现瀑布流呢?
这里我做了如下的假定:
(1 为了实现独特的输出效果
(2 为了满足真正的需求
2.应用的具体情景是什么?
(1 网络加载
(2 本地(pass)
3.首先面临的问题是什么?
(用Cell指代图片View)
(1 图片的大小有什么影响
图片之间差异是不是很大(满足真正需求情况下)/是为了显示独特(独特输出效果)
影响基本一致
(2 用什么样子的结构实现relayout,这里我做了变换 :
一个瀑布流 (3列) = table显示效果 * 3
所以结构如下
waterflow container 分管协调,具体职责为回收TC(tableSytle container)中超出显示范围的cell, 记录当前的waterflow显示的model的范围,决定向TC分派新添加的cell并分派到TC中。回收/重用队列
tableStyle container 判断哪些是超出显示范围的cell, 确定包含的model的index范围
waterflow cell 包含对应model的index/显示功能
好啦,基本的就是这些,剩下的就是开写具体代码了。回头传到gitHub上去.