Я знаю, что здесь уже есть много потенциальных ответов на этот вопрос, но 99,995% всех ответов, которые я видел, используют sizeWithFont, который теперь устарел.
У меня есть одна табличная ячейка, с которой я имею дело, поэтому она должна быть простой, но у меня ничего не получается. вот код, который был составлен, прочитав некоторые ответы в Интернете. Это для метки ячейки.
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *myString = [self.locations[indexPath.row] locationDescription];
return [self heightForText:myString] + 44.0;
}
-(CGFloat)heightForText:(NSString *)text{
NSInteger MAX_HEIGHT = 10000;
UILabel *cellLabelView = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, MAX_HEIGHT)];
cellLabelView.text = text;
cellLabelView.font = [UIFont fontWithName:@"Helvetica Neue Light" size:18];
[cellLabelView sizeToFit];
return cellLabelView.frame.size.height;
}
Высота, определенная в раскадровке, установлена на 44, а строки установлены на 0 для самой метки, чтобы метка могла решить, насколько большой она должна быть.
Проблема № 1: Если текст, установленный для метки, не переносится по словам, я все равно (очевидно) получаю дополнительное дополнение, которое мне не нужно. Я не уверен, как рассчитать, был ли на самом деле перенос слов или нет. Если не было переноса слов (т.е. текст не был длиннее метки, то я просто хочу вернуть 44).
Проблема № 2: По какой-то причине, если мой текст слишком длинный, например, 5 строк, часть текста в конце строки по какой-то причине обрезается, несмотря на то, что MAXHEIGHT составляет 10 000, это почти так, как будто это решает прекратить перенос слов. Если я увеличу отступ в этот момент, скажем, до 88, тогда я все увижу. (Странный).
Ищу элегантные решения, отзывы, помощь, что угодно. Спасибо!