美文网首页
关于UICollectionView HeadView的一点小问

关于UICollectionView HeadView的一点小问

作者: zzbox | 来源:发表于2017-03-20 11:42 被阅读151次

    今天在设置UICollectionView的头部View的时候发现了一个问题 

    我们的需求是在头部添加一个轮播图 当有数据是头部View显示 没有数据时就不显示

    根据查到的资料 我直接设置了headerReferenceSize的高度 flowLayout.headerReferenceSize = CGSizeMake(0, 150);

    然后在[_collectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"UICollectionViewHeader"];

    设置你要创建一个头部View,这跟创建cell差不多。

    这也是和tableView创建头部View的一点区别

    之后添加这个方法 -(UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath {

    UICollectionReusableView * headView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"UICollectionViewHeader" forIndexPath:indexPath];

    [headView addSubview:_cycleScrollView];

    return headView;

    当然 _cycleScrollView 也要创建 我是单独创建的

    - (void)addBannerWithDic:(NSArray *)arr {

    _cycleScrollView = [YCCycleScrollView cycleScrollViewWithFrame:CGRectMake(0, 0, screenWidth, 150) delegate:self placeholderImage:[UIImage imageNamed:@"imgCoverDefault.jpg"]];

    _cycleScrollView.pageControlAliment = YCCycleScrollViewPageContolAlimentRight;

    _cycleScrollView.currentPageDotColor = AppColor_Theme;

    _cycleScrollView.autoScrollTimeInterval = 5;

    强调一点 这里的frame 设置 对在UIcollectionView 中头部View的frame好像没有关系 必须要 flowLayout.headerReferenceSize = CGSizeMake(0, 150); 这样设置 才会显示出来

    但是这样做之后 HeadView的高度就写死了 不管有没有数据 他都会显示在那里 没有数据时 就会显示空白 很难看  

    然后 我就选择了下边这个方法 暂时解决了轮播图的显示隐藏问题 

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

    {

    if(_bannerArrs.count > 0)

    {

    CGSize size = {0, 150};

    return size;

    }

    else

    {

    CGSize size = {0, 0};

    return size;

    }

    }

    当然如果有更好的解决在UIcollectionView 中判断是否显示轮播图的方案 希望大神也可以不吝指教

    相关文章

      网友评论

          本文标题:关于UICollectionView HeadView的一点小问

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