UITableViewCell динамическая высота + скрытые элементы занимают место в Swift?

ios swift uitableview

4229 просмотра

3 ответа

102 Репутация автора

Это сценарий: у меня есть таблица, в которой есть ячейки с динамической высотой. В каждой ячейке у меня есть ярлык и переключатель. Когда я запускаю приложение, можно увидеть только эти два, но затем я устанавливаю переключатель в значение true, тогда под этими двумя элементами появляется (скрытое?) Текстовое представление, увеличивающее высоту ячейки.

Как я могу это сделать? Потому что, когда я пытаюсь скрытые элементы, они также занимают место.

Это то, что я хочу: введите описание изображения здесь

реальность: введите описание изображения здесь

Как я могу это сделать? Я попытался использовать новый Stack View, который может справиться с этим нормально, НО в ячейке таблицы ....

Как я могу решить это?

Автор: nethuszar Источник Размещён: 18.07.2016 09:29

Ответы (3)


0 плюса

26 Репутация автора

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

Автор: Macple Размещён: 18.07.2016 10:16

0 плюса

1559 Репутация автора

Если вы скрываете свое текстовое представление, ваше текстовое представление все еще там, длина текста до тех пор, пока он не скрыт.

Поэтому вместо того, чтобы скрывать / показывать текст текстового представления, вам лучше обновить текст вашего текстового представления из "" -> "того, что вы хотите показать".

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

self.tableView.estimatedRowHeight = 65 //whatever number
self.tableView.rowHeight = UITableViewAutomaticDimension

и в ячейке xib / storyboard добавьте ограничения на topи bottomдля вашего текстового представления, не забывайте также делать свой текстовый просмотр не прокручиваемым также.

На самом деле, я рекомендую вам просто использовать UILabelвместо части UITextField, вам просто нужно установить lineNumberиз Labelбыть 0, и вы можете пренебречь scroll and size settingв текстовом виде .

Автор: Developer Sheldon Размещён: 18.07.2016 10:36

0 плюса

855 Репутация автора

Я решил смешать этот ответ: проблема с динамической высотой для ячеек UITableView (Swift) для динамической высоты, а затем для представлений, которые показывают или нет, я добавил ограничение высоты к представлению, а затем в cellForRowAtIndexPath просто установил константу ограничения равной 0 если вам нужно спрятать его или рост, если вы покажете это.

Надеюсь, это поможет!

Автор: agfa555 Размещён: 14.03.2017 03:09
Вопросы из категории :
32x32