dynamic调整UICollectionViewCell的大小

我有一个UICollectionView与2 UILabelUIImage具有类似的布局:

  -------------------- | | | LABEL1 | | IMAGE | | LABEL2 | | ...... | | ...... | -------------------- 

Label2有不同数量的线条,单元格不同,我希望能够根据label2 height自动调整UICollectionView height label2 height ,让它“自动填充”单元格。 是否有可能在iOS?

您可以重写以下UICollectionViewDelegateFlowLayout方法来dynamic计算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; }