在开发中其实我们使用collectionView的情况可能会比较多,如果我们想自定义一个流水布局应该怎么去做,在Swift中,如果我们想给自己做的collectionView添加自定义的布局,我们可以重写下UICollectionViewFlowLayout的prepare()方法,具体代码如下所示,这个方法是在布局前会去调用一次,还有就是我们设置布局为invalidated,也会去重新的计算布局,也就是调用这个方法的时候invalidateLayout()。这么写的好处就是我们在layout里面去做的布局,不用再去写在外面。显得很自然
private class EmotionLayout:UICollectionViewFlowLayout
{
//collectionView第一次布局的时候会自动的调用
override func prepare() {
super.prepare()
//设置列数为7列
let column:CGFloat = 7
//设置行数为3行
let row:CGFloat = 3
let w:CGFloat = (collectionView?.bounds.size.width)! / column
//计算间距
let margin = ((collectionView?.bounds.size.height)!-row*w)*0.5
//设置cell的大小
itemSize=CGSize(width: w, height: w)
//设置行与行之间的间距
minimumLineSpacing = 0
minimumInteritemSpacing = 0
//设置sectionInset
sectionInset = UIEdgeInsetsMake(margin, 0, margin, 0)
//设置滚动的方向为水平方向
scrollDirection = UICollectionViewScrollDirection.horizontal
//设置分页效果
collectionView?.isPagingEnabled = true
//设置水平滚动条隐藏
collectionView?.showsHorizontalScrollIndicator = false
//设置回弹效果为false
collectionView?.bounces = false
}
}