给UICollectionView 添加sectionhead 和sectionfoot

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);
}
发布了143 篇原创文章 · 获赞 13 · 访问量 14万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览