2015-08-20 2 views
0

enter image description hereДинамическая высота табличное

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

Несколько слов о настройке в раскадровке.

Я установил число строк в 0 для двух описанных меток, чтобы позволить динамически увеличивать их высоту на основе заданного текста.

Для Top Ярлык У меня есть следующие ограничения:

enter image description here

для Bottom Ярлык У меня есть следующие ограничения:

enter image description here

Так что мы говорим о вертикальной расстояние между 1000 зеленой меткой и нижней меткой каждый раз одинаково:

enter image description here

Но без этого расстояние между ячейками не будет растягиваться по высоте. Как уменьшить этот вертикальный интервал? Потому что между ярлыком «1000 зеленая» и нижней меткой существует большое расстояние, если верхняя метка имеет большую высоту из-за текста.

-viewDidLoad В методе я установил:

[self.theTableView setEstimatedRowHeight:145]; 
[self.theTableView setRowHeight:UITableViewAutomaticDimension]; 

Кажется, он работает довольно прохладно, иногда с ошибкой, описанной здесь, но я не знаю, как ограничить это вертикальное расстояние:

http://www.appcoda.com/self-sizing-cells/

+1

[Этот ответ] (http://stackoverflow.com/a/32063950/4151918) будет работать вокруг этой «ошибки», упомянутой в учебнике, где они предлагают «reloadData». –

+0

@PetahChristian, reload data не работает для меня –

+0

Если вы установите ширину, вам не нужно будет использовать reloadData. Если ячейка все еще не выровнена правильно, даже после прокрутки или перезагрузкиData, она указала на проблему с ограничениями.То, что вы пытаетесь сделать, немного сложно. У вас есть «левая» часть и «правая» часть, а более высокая из них будет определять фактическую высоту ячейки. Таким образом, левая и правая части должны иметь ограничение>>, поэтому они могут расширяться, если другая сторона выше, чем они есть. –

ответ

1

Установите верхнее ограничение нижнего ярлыка равным> = 11.5 (или независимо от его минимального интервала).

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

Update:

В прошивке 9, это было бы гораздо проще быть обработано UIStackView.

Просмотр горизонтального стека будет ограничивать (и определять высоту ячейки на основе) двух внутренних вертикальных представлений стека. Левый вертикальный стек будет обрабатывать макет изображения, баннера и метки, а правый вертикальный стек будет обрабатывать макет верхней метки, 10000 и нижней метки. Вам понадобится только 4 ограничения (для горизонтального stackView для ограничения его содержимого ContentView).