【ios】一个简单的CollectionviewCell的高度适应(附Demo)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dangbai01_/article/details/82697769

pre:先看一下实现效果:

一、大致实现步骤:

1.VC里根据imageArr是否存在数据调整高度

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath

{

    NSMutableArray * arr = self.imageArr[indexPath.row];

    if (arr.count > 0) {

        return  CGSizeMake(CKScreenW, 195);

    }else{

        return  CGSizeMake(CKScreenW, 115);

    }

}

2.cell中放一个背景view,初始化frame为zero,根据imageArr的变动设置frame, 放图片

-(id)initWithFrame:(CGRect)frame{

   

    self = [super initWithFrame:frame];

    if (self) {

        [self initUI];

    }

    return self;

}

//初始化界面

-(void)initUI{

   

    self.backgroundColor = [UIColor whiteColor];

    ...

    //默认imgView的Frame为Zero

    self.imgView = [[UIView alloc]initWithFrame:CGRectZero];

    [self addSubview:self.imgView];

}

3.cell中放一个imageArr属性,通过set方法监控数据的变动更改界面

-(void)setImageArr:(NSMutableArray *)imageArr{

   

    _imageArr = imageArr;

   

    CGFloat setX = 20;

    CGFloat setY = 0;

   

   

    //如果有图片数据

    if (_imageArr.count > 0) {

       

        //给imgView设置Frame

        self.imgView.frame = CGRectMake(0, 115, self.frame.size.width, 70);

       

       

        //imgView如果有子view就清除一下

        if (self.imgView.subviews.count > 0) {

            for (UIView *view in self.imgView.subviews) {

                [view removeFromSuperview];

            }

        }

       

       

        //通过for循环往imgView上添加内容

        for (int i =0; i<_imageArr.count; i++) {

           

            if (i == 4) {

                break;

            }

           

            UIImageView * view = [[UIImageView alloc]initWithFrame:CGRectMake(setX, setY,(self.frame.size.width -100)/4, 70)];

            [view setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%@",_imageArr[i]]]];

            [self.imgView addSubview:view];

            setX += view.bounds.size.width + 20;

        }

    }

    //如果没有图片数据,则不显示

    else{

       

        self.imgView.frame = CGRectZero;

       

    }

}

二、附DEMO

POST:https://github.com/canwhite/QCCollectionViewCellMin-height

猜你喜欢

转载自blog.csdn.net/dangbai01_/article/details/82697769