2016-10-27 2 views
1

У меня есть UITextView внутри UITableViewCell. Это не редактируется, данные для textView загружены с JSON синтаксического анализа, я использую UITextView вместо UILabel, потому что мне нужны какие-то жесты крана на NSAttributed Strings, что не может быть сделано с помощью UILabel.Изменение динамической высоты Ограничение элемента внутри UITableViewCell

Для строки, которые я хочу представить текст на UITextView мне нужно видимое, имеющее ограничение высоты с постоянной 40.

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

Проблема в том, что хотя в этом случае UITextView может быть скрыт, его высота остается.

Я использую автоматические размеры для высоты ячейки.

Пробовал много способов, которые я нашел здесь, в stackoverflow, но, к сожалению, не решил мою проблему.

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

enter image description here

+0

Опубликовать скриншот проблемы. попробуйте google «собственные размеры ячеек uitableview» – Vinodh

+0

просто загрузил простую картинку, показывая, что я имею в виду, thx – dejix

+1

Вы можете использовать свойство 'ratedRowHeight' на вашем' tableView' и установить значение 'UITableViewAutomaticDimension' – kchromik

ответ

0

Скрытие подвида не удаляет его из расчетов вида иерархии или макета.

Если вы хотите скрыть UITextView и правильно настроить макет, есть два варианта, о которых я могу думать.

Если ваш таргетинг iOS> = 9, вы должны использовать UIStackView. Он автоматически настраивает свой макет, когда одно из его скрытых объектов скрыто, что вам нужно.

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

+0

Пробовал UIStackView, но, к сожалению, ничего не было. Второе решение не может быть сделано таким образом, потому что у меня есть больше элементов ниже этого UITextView, который я хочу скрыть. Говоря о обновлении макета, я попробовал setNeedsDisplay(), layoutSubviews(), tableView.beginUpdates() и т. Д. Что мне не хватает? – dejix

+0

В вашем вопросе неясно, когда вы пытаетесь скрыть UITextView. Мой ответ работает, если вы делаете это в 'cellForRowAtIndexPath', но если вы его где-то работаете, это может не сработать. Возможно, обновите свой вопрос более подробно. Я использовал второе решение с ~ 10 просмотров в прошлом до добавления UIStackView. В конце концов, это не очень много кода. –

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