一个好用的瀑布流

其实,即使是用Google来搜“iOS 瀑布流”前面的几条基本上都没法用。

在github上也找不到个好用的“瀑布流”。

可能这个效果本来不叫“瀑布流”吧。

问了几个人,也都说这玩意就叫“瀑布流”。

为了让大家用起来方便,没有效率问题,我撸了一个“瀑布流”,并且就叫“瀑布流”。

基于UICollectionView写了个layout,用起来很简单,接口也只有一个。性能方面,参考了阳神的优化技巧。代码在这:github 


关于这个“瀑布流”

首先它用起来很简单。你的cell需要用autolayout,然后配置Collection的layout,不需要设置其DataSource。

写起来大概就是这个样子。

_dataDelegate = [[WELFallDelegate alloc] initWithCollection:_collection cellCount:^NSInteger{

    return _datas.count;

} configureCell:^UICollectionViewCell *(WELFallLoadCell loadCell, NSInteger index) {

    UICollectionViewCell *cell = loadCell(@"youCellID");

    cell.textLabel.text = _data[index];

    return cell;

}];

这里只提供了一行2个cell的实现。因为我觉得一行放三个cell显得很拥挤。而兼容iPad又是另一回事。

效率方面,为了使用起来简单,这里会根据cell的autolayout自动算出大小,并在一些地方做了缓存,避免了重复计算。因为是继承了UICollectionViewLayout,所以免去了一些多余的计算。

最后,每个cell的frame只计算一次,如果你需要重新计算布局,例如下拉刷新之类的操作,你需要使用UICollectionView的wel_reloadDataAndDiscardLayout方法。










最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ios UICollectionView实现瀑布流 通过自定义collectionViewCell和重写colle...
    ochenkai阅读 1,641评论 0 2
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,301评论 4 61
  • 比较难的知识: 1.法的公布形式批准备案机关 2.无效合同损害国家利益(劳动合同欺诈,协迫) 3.合同死,条款活(...
    西风烈_78f5阅读 158评论 0 0
  • 今天是世界读书日,在四月。 在去往北京的路上,听着广播里关于读书的谈论或倡导,把我的思绪带回过往,也触摸着现在。 ...
    寸丹心阅读 394评论 4 3
  • 人一生中遇到一个蓝颜知已,是多么的不容易。要好好珍惜。 他是我的初中同学,个子高高的,皮肤有点黑,...
    颜如花阅读 396评论 0 1