iOS在tableView单元格中计算文本高度

我目前正在开发一个应用程序,它在桌面视图中显示一些鸣叫。 在故事板上,我创build了一个原型单元,其中包含推特条目的基本gui概念。

它看起来大致如下:

++++++++++++++ ++Username++++ ++++++++++++++ ++Tweet+++++++ ++++++++++++++ ++Time-Ago++++ ++++++++++++++ 

现在我正在用下面的代码计算单元格的高度,但不知何故失败。

 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { NSDictionary * currentTweet = [tweetArray objectAtIndex: indexPath.row]; NSString * tweetTextString = [currentTweet objectForKey: @"text"]; CGSize textSize = [tweetTextString sizeWithFont:[UIFont systemFontOfSize:15.0f] constrainedToSize:CGSizeMake(630, 1000) lineBreakMode: NSLineBreakByWordWrapping]; float heightToAdd = 24 + textSize.height + 15 + 45; if(heightToAdd < 90) { heightToAdd = 90; } return heightToAdd; } 

顺便说一下,还有其他的东西,这很奇怪。 如果我滚动tableview整个应用程序似乎冻结。 这是正常的还是我做错了什么?

试试这个你的问题:

 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { NSDictionary * currentTweet = [tweetArray objectAtIndex: indexPath.row]; NSString * tweetTextString = [currentTweet objectForKey: @"text"]; CGSize textSize = [tweetTextString sizeWithFont:[UIFont systemFontOfSize:15.0f] constrainedToSize:CGSizeMake(240, 20000) lineBreakMode: UILineBreakModeWordWrap]; //Assuming your width is 240 float heightToAdd = MIN(textSize.height, 100.0f); //Some fix height is returned if height is small or change it to MAX(textSize.height, 150.0f); // whatever best fits for you return heightToAdd; } 

希望能帮助到你。

如果你正在寻找iOS 7的答案,我在这里跑过去:

iOS 7 sizeWithAttributes:replacesizeWithFont:constrainedToSize