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