我目前正在开发一款应用,它会在tableview中显示一些推文。在故事板上我创建了一个原型单元格,其中包括推文条目的基本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整个应用程序似乎冻结。这是正常的还是我做错了什么?
答案 0 :(得分:13)
请尝试以下问题:
- (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;
}
希望它有所帮助。
答案 1 :(得分:3)
如果您正在寻找iOS 7的答案,我会在这里遇到它:
iOS 7 sizeWithAttributes: replacement for sizeWithFont:constrainedToSize