w8484855@qq.com 发表于 2017-8-24 11:19:27

swift实现瀑布流

本文和大家分享的是swift瀑布流的相关内容,一起来看看吧,希望对大家学习swift有所帮助。  类似瀑布流的使用场景很多.  实现瀑布流的关键节点: 实现cell的高度不同且没有规则的展示  这里整理实现瀑布流思路是针对使用 collectionView 实现:  1. 自定义继承 UICollectionViewFlowLayout  2. 重写 prepare() 方法  3. 将重新计算的所有 UICollectionViewLayoutAttributes 通过 func layoutAttributesForElements(in rect: CGRect) -> ? 方法返回  4. 重新计算 contentSize 大小  产生的疑问:  1. 对于随机高度值问题: arc4random_uniform(150) +100 此处取值 100 ---- 251  2. 第二行的cell将如何选择拼接在上一行的哪个cell之下: 找出每一行中的最小高度  let minH =cellHeights.min()!   a.首先初始化一个存放cell高度的数组,数组中需要存放个数 即是 列数  fileprivate lazy var cellHeights : =Array(repeating:self.sectionInset.top, count:self.cols)  b.在遍历cell个数循环中,要不断更新最短高度  cellHeights = minH +CGFloat(cellH) +minimumLineSpacing  具体实现代码:cell的farme核心计算方法返回计算好的布局属性数组重新计算contentSize大小  这里提供了两个数据源方法,让外界传递进来 列数 和 随机的cell的高度提供外界实现的数据源方法  整个瀑布流的实现结束! 来源:简书
页: [1]
查看完整版本: swift实现瀑布流