Как динамически сделать строку UITableView такой же широкой, как метка в ней?

#objective-c #ios #uitableview

#objective-c #iOS #uitableview

Вопрос:

У меня есть UITableView, где каждая строка может иметь метку в любом месте от отсутствия строк до любого количества строк (реально 3-4). Я хочу, чтобы строка была расширена на основе содержимого UILabelView.

Пока у меня это есть:

 - (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    CGFloat  height        = 60.0;

UIFont *font        = [UIFont fontWithName:@"Helvetica-BoldOblique" size:10.0];
NSString *text      = reminder.notes; //the text that will be in the UiLabelView
CGFloat notesHeight = [text sizeWithFont:font
                               constrainedToSize:CGSizeMake(250.0, 4000.0)
                                   lineBreakMode:UILineBreakModeTailTruncation].height;

height  = notesHeight;

return height;

}
  

Я все еще получаю странные результаты. Что я могу сделать для достижения своей цели?

Спасибо

Ответ №1:

вы используете UILineBreakModeTailTruncation as lineBreakMode, который всегда приводит к одной строке и sizeWithFont:constrainedToSize:lineBreakMode: затем возвращает необходимый размер этой единственной строки.

Попробуйте UILineBreakModeWordWrap вместо этого.

редактировать: надеюсь, вы установили для numberOfLines свойства a UILabel значение 0 (ноль), чтобы ваша надпись могла рисовать много линий.