collectionViewLayout是个很强大的控件,有了它不仅能帮助我们快捷而准确的解决9宫格布局的问题,更是能解决很多特殊布局的难点.比如,瀑布流:

一般来说我们都是直接使用一个UICollectionViewFlowLayout的布局方式,也就是流水布局,来放置我们的collectionView
但是,为了达到瀑布流的效果,我们就需要根据服务器提供的数据,来重写布局.

这个布局继承自UICollcetionViewLayout
我们需要重写这个类的一些方法.并提供一些外部能自定义的属性






首先是遍历了字典中所有的maxY来计算最小的那个Y
然后返回这个最短Y的那个cell的attrs,其中的代理方法是为了得到和服务器提供数据比例一致的宽高比.

最后就是要设定下这个collectionView的contentSize了,应该是最大的cellY加上我们所设置的sectionInset的bottom值了

只需要将自己的模型属性放到自定义的cell中,然后创建时直接调用这个布局,就能有瀑布流的效果了.这个方法确实要比以前自定义scrollView的思路简单很多了,而且不需要自己去考虑缓存和datasource方法,使得布局简单了很多.

网友评论