Collectionview 的sectionhead 和footview 和uitableview不同
反倒和uitableviewcell 是一种写法
需要注册cell 并要求使用固定的view类型
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
UICollectionReusableView *reusableview = nil;
if (kind == UICollectionElementKindSectionHeader) {
reusableview = someHeaderView;
}
if (kind == UICollectionElementKindSectionFooter) {
reusableview = someFooterView;
}
return reusableview;
}
加入这样的代码以后并没有跑起来
找到原因是没有设置宽高 不会跑代理的
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
[layout setScrollDirection:UICollectionViewScrollDirectionVertical];
layout.headerReferenceSize = CGSizeMake(100, 22);
UICollectionView *dataListcollectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 64,self.view.frame.size.width,260) collectionViewLayout:layout];
[dataListcollectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"cell"];//注册cell
[dataListcollectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"header"];//注册header的view
dataListcollectionView.delegate = self;
dataListcollectionView.dataSource = self;
[self.view addSubview:dataListcollectionView];
参考文章
UICollectionView HeaderView 怎么做
UICollectionView显示header和footer
然后是调整 每个section 底下的collectionview间距
#pragma UICollectionView - delegate
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout
insetForSectionAtIndex:(NSInteger)section {
return UIEdgeInsetsMake(14, 14, 14, 14);
}