2017-01-28 1 views
0

У меня есть tableView с одним пользовательским прототипом cell. Это cell имеет три labels (название, цена, подробности), где каждый из них загружает свой текст с помощью CoreData, поэтому их высота не постоянна.

heightForRow atIndexPath выполнен до cellForRow atIndexPath, поэтому я могу установить только одну высоту для всех ячеек. Но мне нужно, чтобы все они имели разный размер.
То, что я пробовал, находится в cellForRow atIndexPath Я получаю всю высоту этикетки и доставляю ее до tableView.rowHeight. К сожалению, он устанавливает, что все ячейки имеют одинаковую высоту.
Мой вопрос: Есть ли способ или способ установить высоту каждой ячейки отдельно, в зависимости от того, сколько пространства необходимо для отображения всех этикеток внутри?Есть ли способ установить высоту ячейки после загрузки компонентов, но до ее отображения?

+0

Вы пробовали любой подход из Интернета? –

+0

Это считается одним из самых популярных вопросов в теге iOS в SO. Найдите, как установить автоматические измерения для ячейки, и вы найдете ответ. –

+0

На самом деле, я пробовал исследования, описанные вами двумя, но не смог найти удовлетворительного ответа, поэтому есть вопрос, на который мой вопрос. – mcgtrt

ответ

0

Попробуйте это в виду сделал нагрузки

self.tableView.rowHeight = UITableViewAutomaticDimension; 

self.tableView.estimatedRowHeight = 44.0; // set to whatever your "average" cell height is 
+0

К сожалению, это был не ответ в моем случае. Он растягивал высоту клетки почти на весь экран. Я проверил свои ограничения в раскадровке, если какой-либо из них в прототипе ячейки не делает rowHeight настолько большим, но они не были. Все еще не знаю, почему они так велики. – mcgtrt

+0

@mcgtrt показать мне ваш стол с ограничениями. – rv7284

0

Что я сделал было:
- набор ограничений с нуля (все границы элемента для просмотра содержимого ячейки)
- используется как это было предложено @ rv7284:
tableView.estimatedRowHeight = 150 tableView.rowHeight = UITableViewAutomaticDimension
с одной разницей - не в viewDidLoad, а в viewWillAppear.
Все метки имеют ширину и высоту после загрузки некоторого текста и будут помещены в ОЗУ.

 Смежные вопросы

  • Нет связанных вопросов^_^