CollectionView Header的添加和设置
建议先看CollectionView系列第一篇:http://www.jianshu.com/p/a1614404ae96
注册Header子类
这里不再赘述一些第一篇见过的东西,只介绍一下和添加 Cell不同的地方。
//这里的HeaderCRView 是自定义的header类型
[_muneView registerClass:[HeaderCRView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:Identifier];
自定义Header子类
自定义的话,header子类要继承自 UICollectionReusableView。然后在自行发挥。
要实现的代理方法
//这个方法是返回 Header的大小 size
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section
//这个也是最重要的方法 获取Header的 方法。
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
NSString *CellIdentifier = @"header";
//从缓存中获取 Headercell
HeaderCRView *cell = (HeaderCRView *)[collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:CellIdentifier forIndexPath:indexPath];
return cell;
}
当然 footer和header一样
网友评论
类似这个方法
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
if ([kind isEqualToString:UICollectionElementKindSectionHeader]){
self.headerViewForCollectionView = [collectionView dequeueReusableSupplementaryViewOfKind :kind withReuseIdentifier:UICollectionViewHeaderID forIndexPath:indexPath];
self.headerViewForCollectionView.frame = CGRectMake(0, 0, SCREEN_Width, 50);
self.headerLabelForCollectionView = [[UILabel alloc]initWithFrame:CGRectMake((SCREEN_Width - 150)*0.5, 0, 150, 50)];
self.headerLabelForCollectionView.text =@“请选择”;
UIButton * deleteButton = [ UIButton buttonWithType:UIButtonTypeCustom];
deleteButton.frame = CGRectMake(10, 10, 22, 22);
[deleteButton setImage:[UIImage imageNamed:@"close"] forState:UIControlStateNormal];
[deleteButton addTarget:self action:@selector(closeSelectCollectionView) forControlEvents:UIControlEventTouchUpInside];
[self.headerViewForCollectionView addSubview:deleteButton];
[self.headerViewForCollectionView addSubview:self.headerLabelForCollectionView];
return self.headerViewForCollectionView;
}else{
return nil;
}
问题:我的collectionView的Header 不会重用,每次都加一次,叠在一起!不晓得哪里出了问题,麻烦看一下
坑死了
//这个也是最重要的方法 获取Header的 方法。
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
NSString *CellIdentifier = @"habitHeaderView";
//从缓存中获取 Headercell
HabitHeaderView *cell = (HabitHeaderView *)[collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:CellIdentifier forIndexPath:indexPath];
if (indexPath.section == 0) {
cell.titleString = @"吃饭";
}else{
cell.titleString = @"睡觉";
}
return cell;
}
我这样写的