在与iOS 8中引入的自动单元格高度作斗争之后,我发现它还不够成熟,我需要手动计算我的单元格(有聊天内容)的大小。
我的方法tableView:heightForRowAtIndexPath: 是调用的,它返回正确的高度(这也改变了多行等,没有问题)。我确认它被称为,因为它里面有一个断点。但是,我的表视图仍然显示如下:

其中一些文本实际上是多行的,tableView:heightForRowAtIndexPath:返回它们正确的高度。但是,我的表视图并没有正确地显示它,而是显示了所有类似于单行的内容。
我删除了表视图的估计行高度属性,没有使用自动单元格高度,也没有实现esimated行高委托方法。为什么我的细胞尺寸不正确?
更新:,我使用的是自动收费表,我将文本视图连接到容器的底部。我已经删除了约束,现在它有时会起作用。有时它确实返回正确的大小,但有时,它返回一个不正确的大小。
更新2:问题似乎与中断模式有关。如果我的文本是长的,自然地包装到下一行,它是正确的计算。但是,如果我的文本包含显式换行,则计算错误,导致多行文本像单行一样计算。这是我的代码:
UIFont *textFont = [UIFont systemFontOfSize:14.f];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
paragraphStyle.alignment = NSTextAlignmentLeft;
textAttrs = @{
NSFontAttributeName: textFont,
NSParagraphStyleAttributeName: paragraphStyle,
NSForegroundColorAttributeName: [UIColor blackColor]
};
NSString *content = message[@"content"];
CGSize fitSize = [content boundingRectWithSize:CGSizeMake(availableWidth, MAXFLOAT) options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading) attributes:textAttrs context:nil].size;此时,自然包装长文本的大小计算是正确的,但有行中断的文本本身是不正确的。为什么?
发布于 2016-03-12 12:27:42
看看我创建的示例项目:https://github.com/slotti85/AutoCellHeight。
对我来说,自动计算很好--即使使用UITextView。在情节提要中,我未选中的、UITextView的User Interaction Enabled和Scrolling Enabled复选框。
告诉我如果我忘了你项目的具体内容..。
希望能帮上忙!
https://stackoverflow.com/questions/35956661
复制相似问题