工作中有个需求需要给CollectionView不同的section添加背景,当时在网上只找到了一份Swift的demo而我的项目又是用OC写的, 又不想混编, 没办法既然找不到OC索性就把这份代码翻译成OC吧, 然后就有了下面的代码, 顺便附上Swift代码
UICollectionView 无法通过属性设置或数据源来为不同的 Section
设置不同的背景颜色,要想达到这样的效果就需要自定义自己的布局对象(UICollectionViewLayout)。自定义布局可以完全自定义布局,但这里我们只继承
UICollectionViewFlowLayout 还是使用系统内置的 Flow 布局。
那么 Section 的背景颜色是属于 UICollectionView 的那一块呢?它既不是 Cell 视图,也不是
Supplementary 视图,而是 UICollectionView 的 Decoration(装饰) 视图 。Decoration
视图不同与前两者, 它无法通过数据源来设置,而是由布局对象来定义和管理。
无论是定义 Cell 视图、Supplementary 视图还是 Decoration 视图都是通过它们的
attributes(UICollectionViewLayoutAttributes)来定义的。
OC版:https://github.com/704433701/JHCollectionViewSectionBackgroundDemo