自动布局。 UITableView基于UITextview文本的动态高度

时间:2015-02-01 19:21:42

标签: uitableview ios7 ios6 autolayout ios-autolayout

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

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

- (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,似乎this solution对我不起作用,我想我需要通过代码保持计算高度。

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

0 个答案:

没有答案