Как рассчитать высоту tableviewcell с правым/левым стилем?

У меня есть UITableView с ячейками прототипов в стиле справа/слева. Длина текста обоих (многострочных) меток сильно различается.

Это означает, что ширина меток будет меняться относительно текста (даже в том же разделе).

В более общем смысле этот вопрос применяется ко всем ячейкам, содержащим по меньшей мере две метки, которые выравниваются горизонтально друг к другу.

Можно ли вычислить результирующую высоту ячейки (в heightForRowAtIndexPath ) без заданной ограниченной ширины меток?

Я хотел бы разместить текст как можно меньше строк = минимизировать высоту ячейки (см. Рисунок).

enter image description here

Любые предложения/решения приветствуются!

2
nl ja de
Имейте upvote. Пожалуйста, добавьте фотографии.)
добавлено автор Eimantas, источник
Благодарю. Изображение вверх.
добавлено автор Francesco, источник

1 ответы

Высота строки вычисляется в методе делегата tableview - tableView: heightForRowAtIndexPath:

This is where you have to calculate the possible width & height of labels. It is possible to do by using [@"LOOOONG TEXT" sizeWithFont:defaultFont]; Then just do the appropriate math and return needed height for the cell.

1
добавлено
Я считаю, что для этого используется новая функция автозапуска. Если это так (iOS6 и выше), вы не должны беспокоиться о вычислениях. Это делается для вас на основе ограничений, которые вы предоставляете (минимальная ширина ярлыка, минимальное расстояние между метками и т. Д.).
добавлено автор Eimantas, источник
Хорошо, это в основном то, что я делаю. Задача состоит в том, что ширины textLabel и detailTextLabel влияют друг на друга: в моем примере (3-я ячейка) вы могли бы сжать одну ячейку в одну строку, но в результате получилась другая метка, имеющая> = 3 строки. Обычно решение для таких задач - итерация: изменение ширины меток, вычисление результирующих высот надписей, повторение этих шагов до тех пор, пока уровень надписей BOTH не будет равен одному и тому же (минимизированному) значению. Мне было интересно, насколько это приемлемый подход (производительность!?!?) Или есть шаблон/демо-код для достижения этой цели.
добавлено автор Francesco, источник
Я использую автозапуск, и он меняет размеры этикеток. Но, насколько я могу судить по тестированию, адаптация размера происходит после того, как рассчитаны размеры клеток. Это, в свою очередь, означает, что у меня нет информации об окончательных размерах/ширинах меток при выполнении математики в tableView: heightForRowAtIndexPath . Итак, как обойти это? Мне интересно, что я единственный, кто пытается решить эту проблему. Мне кажется, что это довольно обычная задача ...
добавлено автор Francesco, источник
Если я использую sizeWithFont: вместо sizeWithFont: constrainedToSize: lineBreakMode: , все высоты ячейки вычисляются так, как если бы метки были однострочными, независимо от того, как долго текст/как многие линии у него есть. Угадать constrainedToSize не имеет большого смысла, поскольку в большинстве случаев догадка не будет соответствовать окончательной ширине метки, и поэтому рассчитанная высота ячейки может быть неправильной ...
добавлено автор Francesco, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.