1

我找到了很多如何解决这个问题的链接,但是如果字符串有不同数量的字母,它的工作原理就会不同。

所以我使用的第一种方法是:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
     NSDictionary *comment = [self.comments objectAtIndex:indexPath.row];

     NSString *text = comment[@"text"];

     CGSize stringSize = [text sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(320, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];

     return stringSize.height;
}

我使用的第二种方法:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
     NSDictionary *comment = [self.comments objectAtIndex:indexPath.row];
     NSString *text = comment[@"text"];

     UITextView *tempTV = [[UITextView alloc] init];
     [tempTV setText:text];
     CGFloat width = tableView.frame.size.width;           
     CGSize size = [tempTV sizeThatFits:CGSizeMake(width, MAXFLOAT)];
     return size.height;
}

它可以工作,但有时如果文本长度超过 5 或 6 行,我看不到最后一句话或最后一行,我还使用自动布局,使我的文本视图适合内容视图的各个方面。

我也想支持 iOS 6,看来这个解决方案对我不起作用,我想我需要通过代码保持计算高度。

我在调试代码时注意到,我的 UITextView 框架等于情节提要的大小。所以宽度是600 pt而不是显示的宽度320 pt我已经在-cellForRowAtIndexPath方法中调试了它。但即使我对这个值进行硬编码,高度计算在任何情况下都会出现问题。

4

0 回答 0