瀑布流--自定义uicollectionviewLayout

PageViewLayout :UICollectionViewLayout

1.准备布局----第一次会加载  reloaddata会加载  其他不会加载此方法

override func prepare()

2.步骤: 

2.1 根据collectionView  获取组数 ---遍历组数----根据collectionView获取每组中的个数---

let attr = UICollectionViewLayoutAttributes(forCellWith: indexPath)

计算xy 每组中的页数 行号 列号

attr.frame = CGRect(x: itemX, y: itemY, width: itemW, height: itemH)

attrs.append(attr)

pageCount += (itemCount - 1) / (cols * rows) + 1

3.

//    2.返回布局

extension PageViewLayout{

override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {

return attrs

}}

//    3.返回设置滚动范围

extension PageViewLayout{

override var collectionViewContentSize: CGSize {

return CGSize(width: CGFloat(pageCount) * collectionView!.bounds.width, height: 0)

}

4.HYPageView

1.中添加titileView 和 collectionView  设置数据源代理并且把数据源代理暴露出去(collectionView本身数据源代理中调用暴露的数据源代理)

2.当collectionView滚动结束--页码的交互 和 titleView交互

你可能感兴趣的:(瀑布流--自定义uicollectionviewLayout)