美文网首页
UICollectionView详解:6-补充视图(Header

UICollectionView详解:6-补充视图(Header

作者: 赵亦晨 | 来源:发表于2016-11-08 16:35 被阅读0次

    CollectionView的每个Section也可以自定义Header与Footer,本节讲解如何创建自定义的Header与Footer。

    1、创建自定义Header/Footer类(XIB方式)

    创建一个自定义类,继承自:UICollectionReusableView

    创建一个xib文件,并添加一个:Collection Reusable View控件

    定义样式

    2、注册Header与Footer

    分别添加Header与Footer的可重用标示符

    staticNSString*constreuseIdentifierHeader=@"MYHeaderCell";

    staticNSString*constreuseIdentifierFooter=@"MYFooterCell";

    在viewDidLoad方法中注册Header与Footer

    [self.collectionView registerNib:[UINibnibWithNibName:@"MYHeaderView"bundle:nil]forSupplementaryViewOfKind:UICollectionElementKindSectionHeaderwithReuseIdentifier:reuseIdentifierHeader];

    [self.collectionView registerNib:[UINibnibWithNibName:@"MYFooterView"bundle:nil]forSupplementaryViewOfKind:UICollectionElementKindSectionFooterwithReuseIdentifier:reuseIdentifierFooter];

    3、实现Header与Footer的数据源方法

    实现CollectionView的viewForSupplementaryElementOfKind:代理方法,并设置Header、Footer的一些属性,如下:

    -(UICollectionReusableView*)collectionView:(UICollectionView*)collectionView viewForSupplementaryElementOfKind:(NSString*)kind atIndexPath:(NSIndexPath*)indexPath{

    UICollectionReusableView*supplementaryView;

    if([kind isEqualToString:UICollectionElementKindSectionHeader]){

    MYHeaderView*view=(MYHeaderView*)[collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeaderwithReuseIdentifier:reuseIdentifierHeader forIndexPath:indexPath];

    view.headerLabel.text=[NSStringstringWithFormat:@"这是header:%d",indexPath.section];

    supplementaryView=view;

    }

    elseif([kind isEqualToString:UICollectionElementKindSectionFooter]){

    MYFooterView*view=(MYFooterView*)[collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionFooterwithReuseIdentifier:reuseIdentifierFooter forIndexPath:indexPath];

    view.footerLabel.text=[NSStringstringWithFormat:@"这是Footer:%d",indexPath.section];

    supplementaryView=view;

    }

    returnsupplementaryView;

    }

    4、设置Header与Footer的大小

    实现UICollectionViewDelegateFlowLayout协议中的referenceSizeForHeaderInSection以及referenceSizeForFooterInSection方法,设置Header与Footer的大小

    -(CGSize)collectionView:(UICollectionView*)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section{

    CGFloatscreenWidth=[UIScreenmainScreen].bounds.size.width;

    returnCGSizeMake(screenWidth,69);

    }

    -(CGSize)collectionView:(UICollectionView*)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section{

    CGFloatscreenWidth=[UIScreenmainScreen].bounds.size.width;

    returnCGSizeMake(screenWidth,50);

    }

    相关文章

      网友评论

          本文标题:UICollectionView详解:6-补充视图(Header

          本文链接:https://www.haomeiwen.com/subject/xznauttx.html