2013-02-15 1 views
2

Пользовательские подвидные элементы UITableViewCell, добавленные в код с использованием автоматических макетов (проверенных). Однако все дело в том, что не нужно вычислять высоту каждой ячейки таблицы и метода делегата heightForRowAtIndexPath ожидает высоты при рисовании tableview.Подпрограммы пользовательского UITableViewCell с использованием автоматического макета - нет xibs, все в коде

Как я могу вычислить эту высоту по контенту, используя автоматическую компоновку (добавление и использование кода на основе визуального формата в уже добавленном и работающем коде) и вернуть его на этот heightForRowAtIndexPath?

Кроме того, я не могу это сделать в фоновом потоке (или я могу?), И поэтому, если у меня есть UITableView, используя это, например, список из 1000 записей, это будет продолжаться вечно, правильно?

ответ

1

Autolayout в этом случае означает, что вам не нужно вычислять размеры кадров ваших подзонов в каждой ячейке. Это не имеет никакого отношения к методу heightForRowAtIndexPath - это используется табличным представлением, чтобы определить кадр ячейки, который затем будет информировать о структуре подсмотров.

Использование Autolayout для определения высот, вероятно, будет довольно медленным, и вы не сможете сделать это на фоновом потоке. Если у вас 1000 строк, я бы рассмотрел иерархическую структуру вместо отдельной таблицы, так как это будет довольно утомительно для прокрутки. Вы также можете рассмотреть возможность расчета высоты в точке установки или создания данных.

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

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