UICollectionView 设置section的背景色
程序员文章站
2022-07-13 12:57:57
...
- 使用tableview时,我们可以随意设置Tableview中每个Section的背景颜色而在UICollectionView中。系统并没有给我们提供一个现成的代理方法或者是属性来设置。为collectionView设置需要自己去自定义。需要在系统的流式布局UICollectionViewFlowLayout的基础上进行自定义。在网上找到了一个Swift版本的的。在此基础上进行修改完成了个OC版的Demo,写下备用。也可以留给有需要的人。
- 使用方式:可以使用github上的ULBCollectionViewFlowLayout。在控制器中遵守ULBCollectionViewDelegateFlowLayout协议。在创建CollectionView时使用ULCollectionViewFlowLayout样式的layout,因为ULCollectionViewFlowLayout继承与UICollectionViewFlowLayout,多提供了下面的代理方法:
- (UIColor *)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout colorForSectionAtIndex:(NSInteger)section;
-
Tips:collectionView在显示的时候没有问题。但是当你进行collectionView删除时,当section删除了最后一个item时就会奔溃。所以需要在代码使用时加上保护。
参照*在collectionView使用的代理时进行修改可以暂时解决奔溃问题,如下:
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
if(self.dataSoruces.count>0){ return 1; }
else{ return 0; }
}
- 在删除item时。加上判断,如果删除item之后,section中的
[ self deleteItemsFromDataSourceAtIndexPaths:selectedIndexes];
if(idShadeInside.count > 0){
[self.cv deleteItemsAtIndexPaths:selectedIndexes];
}
else{
//Creating an IndexSet with the Section to Erase
NSMutableIndexSet *indexSet = [NSMutableIndexSet indexSet];[indexSet addIndex:0];
[self.cv deleteSections:indexSet];
}
ps:以上我是基于一个section的基础上添加。多个section的话。自己可以进行判断。以上。
上一篇: iOS 全局设置背景色方法
下一篇: JLabel设置背景色