Привет Джош,
Используя tableView:heightForRowAtIndexPath:
, вы можете указать размер каждой строки во время выполнения. теперь ваша проблема в том, как получить высоту из вашей строки, есть функция в классе NSString по этому коду,
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *str = [dataSourceArray objectAtIndex:indexPath.row];
CGSize size = [str sizeWithFont:[UIFont fontWithName:@"Helvetica" size:17] constrainedToSize:CGSizeMake(280, 999) lineBreakMode:NSLineBreakByWordWrapping];
NSLog(@"%f",size.height);
return size.height + 10;
}
ниже строки вы устанавливаете номер вашей метки. линии до макс. поэтому установите его в cellForRowAtIndexPath: метод.
cell.textLabel.numberOfLines = 0;
если вы используете какую-то пользовательскую ячейку, то управляйте строкой всей метки с этим и получите сумму всей этой высоты, затем установите высоту вашей ячейки.
Редактировать:
iOS 8 и более поздние версии, если вы установили надлежащие ограничения для автоматической разметки для метки, то для достижения этого вам нужно будет установить только следующий метод делегата.
-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {
//minimum size of your cell, it should be single line of label if you are not clear min. then return UITableViewAutomaticDimension;
return UITableViewAutomaticDimension;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return UITableViewAutomaticDimension;
}
вот и все. никаких расчетов не требуется. Для получения дополнительной информации обратитесь к этому учебнику.