iOS点滴

一个好用的瀑布流

2016-01-05  本文已影响604人  WELCommand

其实,即使是用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方法。


上一篇 下一篇

猜你喜欢

热点阅读