IOS вычисляет высоту текста в ячейке 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;
}
Кстати, есть что-то другое, что странно. Если я просматриваю табличное представление, все приложение, похоже, замерзает. Является ли это нормальным, или я делаю что-то неправильно?
Ответы
Ответ 1
Попробуйте это для вашей проблемы:
- (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;
}
Надеюсь, что это поможет.
Ответ 2
Если вы ищете ответ iOS 7, я просмотрел его здесь:
iOS 7 sizeWithAttributes: замена для sizeWithFont: constrainedToSize