说到UICollectionView首先想到的就是瀑布流,那么瀑布流只是自定义UICollectionView的一种,那么如何自定义UICollectionViewFlowLayout呢,自定义UICollectionViewFlowLayout最重要的是那一部分?话不多说,直接上干货儿。
首先你要自定义UICollectionViewFlowLayout就要自定义一个类继承于UICollectionViewFlowLayout,你还需要一个数组专门用来存储UICollectionViewLayoutAttributes。
然后就是重写这个方法,必须的一点是必须调用[super prepareLayout]这个方法,然后就是保存UICollectionViewLayoutAttributes到数组中。
上面这个方法必须实现的,下面这个方法就是重点了,一般设置cell的frame就是在这个地方设置,很多种样式的UICollectionView也都可以在这里面实现。
有时候你会突然发现,UICollectionView的滚动范围不对,下面一部分滚不过去,这就是因为UICollectionVoew本身自己有一个默认的cell高度,然后它会根据数量和高度自己计算出一个滚动范围,所以这个方法就很重要了。需要我们来实现,在这个方法里面重新设置下cell的size,UICollectionView就不会用默认的高度来计算了,就可以防止这个问题。