Ios 动态调整UICollectionViewCell的大小

Ios 动态调整UICollectionViewCell的大小,ios,uicollectionview,uicollectionviewcell,Ios,Uicollectionview,Uicollectionviewcell,我有一个带有2个UILabel的UICollectionView和一个布局类似的UIImage: -------------------- | | | LABEL1 | | IMAGE | | LABEL2 | | ...... | | ...... | -------------------- Label2有一个可变的行数,不同的

我有一个带有2个UILabel的UICollectionView和一个布局类似的UIImage:

 --------------------
 |                   |
 |    LABEL1         |
 |    IMAGE          |
 |    LABEL2         |
 |    ......         |
 |    ......         |
 --------------------
Label2有一个可变的行数,不同的单元格,我希望能够根据Label2的高度自动调整UICollectionView高度,让它自动填充单元格。
是否可以在iOS中执行此操作?

您可以覆盖以下UICollectionViewDelegateFlowLayout方法,以动态计算UICollectionViewCell的高度,并根据需要设置常量值

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

    UIFont *fontLabel1 = [UIFont systemFontOfSize:17];
    UIFont *fontLabel2 = [UIFont systemFontOfSize:14];
    int padding = 5;
    int maxWidthOfLabel = 300;
    CGSize maximumLabelSize = CGSizeMake(maxWidthOfLabel, CGFLOAT_MAX);

    NSString *strLabel1 = @"Label one text";// Get text for label 1 at indexPath
    NSString *strLabel2 = @"Label two text";// Get text for label 2 at indexPath

    NSStringDrawingOptions options = NSStringDrawingTruncatesLastVisibleLine |
    NSStringDrawingUsesLineFragmentOrigin;

    NSDictionary *attr1 = @{NSFontAttributeName: fontLabel1};
    NSDictionary *attr2 = @{NSFontAttributeName: fontLabel2};

    // Calculate individual label heights
    CGFloat heightLabel1 = [strLabel1 boundingRectWithSize:maximumLabelSize
                                                options:options
                                             attributes:attr1
                                                context:nil].size.height;
    CGFloat heightLabel2 = [strLabel2 boundingRectWithSize:maximumLabelSize
                                                options:options
                                             attributes:attr2
                                                context:nil].size.height;
    CGSize sizeOfImage = CGSizeMake(50, 50);

    // Calculate height based on all Views (2 Labels + 1 ImageView)
    CGFloat height = heightLabel1+heightLabel2+sizeOfImage.height+2*padding;
    CGFloat width = collectionView.frame.size.width;// Set width
    CGSize size = CGSizeMake(width, height);
    return size;
}

当@Chris询问UICollectionViewCells时,为什么这是公认的答案?与UITableViewCell不同…同意Greg的观点。未回答问题。已更新答案以计算UICollectionViewCell的高度。