1) Создайте пользовательский класс UITableViewCell.
2) Заполните свою ячейку, как считаете нужным. Я сам использую функцию типа 'hydrateWithArray'.
3) После заполнения данных измените размеры и переместите элементы, используя функции sizeToFit, чтобы заставить метки соответствовать размеру того, что вы в них помещаете. Подсказка: если сначала установить рамку метки и задать для нумерации строк значение 0 ... при заполнении текста и изменении размера, он будет растягивать метку только по вертикали и заставлять ширину оставаться прежней.
4) Создайте отдельную функцию (шахта называется selectedHeight), которая возвращает значение с плавающей точкой и высоту, на которую вы хотите поместить ячейку в таблице (на основе перемещенных объектов из шага 3).
- (float)calculatedHeight {
return textLabel.frame.origin.ytextLabel.frame.size.height5;
}
5) В вашем классе UITableView вам нужно будет импортировать ваш класс tableViewCell и создать фиктивный объект ячейки. Вы собираетесь использовать этот класс, чтобы вычислить, какой высоты должна быть каждая клетка. Затем в методе heightOfRowAtIndex ....
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
float height;
if ( !dummyCell ) dummyCell = [[CustomCell alloc] initWithFrame:CGRectMake(0,0,0,0) reuseIdentifier:@"myCell"];
[dummyCell hydrateWithTweet:[tableArray objectAtIndex:indexPath.row]];
height = [dummyCell calculatedHeight];
if ( height == 0 ) height = 50;
return height;
}
Это довольно простой пример, поэтому вам может понадобиться сойти с ума с проверкой ошибок в вашем конкретном случае, но это должно, по крайней мере, указать вам правильное направление. Наслаждайтесь!