我可以设置单元格的高度并显示内容,但是我无法向下滚动集合视图,如果我的数组中有2个项目,则UITextView内容(在该自定义单元格中)与重新开始收集视图中的第二个单元格:
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
CustomCellView* cell = [collectionView dequeueReusableCellWithReuseIdentifier:DequeueReusableCell forIndexPath:indexPath];
[cell setHeight: [cell calculateHeight]];
[cell layoutIfNeeded];
return cell;
}
答案 0 :(得分:0)
您无法手动设置单元格大小。您需要让collectionView为您设置单元格。
假设您正在使用Flow布局,如果您想要一个常量项目大小,您只需在布局,IB或代码中设置itemSize属性。如果你需要动态尺寸,你需要实现这个:
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath;
在回答有关如何计算尺寸的问题时,我会做这样的事情:
+ (CGFloat)heightForCellWithText:(NSString *)text width:(CGFloat)width
{
UIFont *textViewFont = [UIFont systemFontOfSize:16];
NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:text attributes:@{NSFontAttributeName : textViewFont}];
CGRect rect = [attributedText boundingRectWithSize:CGSizeMake(width, FLT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin context:nil];
return rect.size.height;
}