Внутри вашего cellForRowAtIndexPath
: функция.В первый раз, когда вы создаете свою ячейку:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
cell.textLabel.numberOfLines = 0;
cell.textLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:21.0];
}
Вы заметите, что я также установил количество строк для метки равным 0. Это позволяет использовать столько строк, сколько необходимо.
Вам также нужно указать, насколько большим будет ваш UITableViewCell
, так что в вашей функции heightForRowAtIndexPath
:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellText = @"some text which is part of cell display";
UIFont *cellFont = [UIFont fontWithName:@"HelveticaNeue" size:21.0];
CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT);
CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
int buffer = 10;
return labelSize.height + buffer;
}
Я добавил дополнительный 10
к моей возвращенной высоте ячейки, потому что мне нравитсянебольшой буфер вокруг моего текста.
ОБНОВЛЕНИЕ: Если выходные данные выглядят слишком туго и комковато, сделайте это -
[cell.textLabel setMinimumFontSize:13.0];
[cell.textLabel setAdjustsFontSizeToFitWidth:NO];
Это должно решить вашу проблему.