2017-01-13 14 views
0

У меня есть xib, который я использую для ячеек таблицы (с переменной высотой, в вертикальном UITableView), и каждая ячейка заполняется данными с текстом изображения и переменной длины, но, вероятно, с разным количеством строк , Я попробовал обернуть их в horizontal UIStackView, но я обнаружил, что нет текстового представления, которое изменяет размер его контейнера, чтобы он соответствовал переменной нескольким строкам.Возможно ли сделать UILabel, UITextView или подобное, что всегда изменяет его высоту, чтобы соответствовать его содержимому в Interface Builder без усечения?

Как UILabel, так и UITextView обрезают их содержимое, казалось бы, произвольно в Interface Builder, а при изменении размера изображения контейнер UIStackView растет и сжимается соответственно, чтобы обернуть его содержимое.

Есть ли какой-либо вид или способ добавления пользовательского представления, которое динамически изменяет размер его высоты в соответствии с его длиной текста, без усечения?

+0

Выберите 'UILabel' и в инспекторе атрибутов просто установите' numberOfLines' в 0 и оберните режим 'word wrap'. Если вы правильно установили ограничения, он всегда будет изменять размер, чтобы соответствовать его контенту. Я не уверен, как он работает в представлении стека, но внутри обычного 'UIView' он отлично работает. – Rikh

+0

По крайней мере, в интерфейсе Builder он не изменяет размер при изменении текста на боковой панели свойств, даже если строки равны 0, а 'word wrap' установлен. – JaviCasa

+0

Это должно быть даже в интерфейсе. Вероятно, некоторые ограничения не позволяют ему правильно изменять размер, поскольку предполагаемое ограничение имеет более низкий приоритет, чем явно определенное ограничение, попробуйте присвоить 'UILabel' высоту'> = '5. – Rikh

ответ

1

Я думаю, что это то, что вы хотите :)

enter image description here

Есть множество руководств о том, как достичь его :) Во всяком случае Лемм объяснить шаги здесь, надеюсь, что это помогает :)

Совет:

использования делают из Tableview-х estimatedRowHeight и установить его на UITableViewAutomaticDimension и пусть UITableView сделать магнум микросхемы для u :)

Шаг 1:

Либо создать клетки XIB или создать прототип ячейки на UITableViewController. Какой бы вам ни было комфортно.Создание ячейки XIB, IOS ожидает, что вы зарегистрировать XIB с многоразовой идентификатору ViewDidLoad() Я планирую, чтобы избежать этого, следовательно, создать ячейку прототипа в UITableViewController :) Позволяет предоставить ему многоразовый идентификатор :)

enter image description here

Шаг 2:

Drag UIImageView и UITextView и применять ограничения, как показано :) Этот ответ предполагает, что ваша высота ImageView фиксируется :) В случае, если это не подправить ответ немного :)

enter image description here

Теперь изображениеView имеет H: | - (8) - [ImageView] - (8) - | и V: | - (8) - [ImageView] и, наконец, ограничение высоты 100 :)

Теперь добавьте TextView ниже его :)

enter image description here

TextView не имеет ограничений по высоте :) Это просто имеет верхний, нижний левый и правый ограничения :)

Шаг 3:

enter image description here

Теперь выберите TextView и осторожно снимите включен скроллинг, показывает горизонтальный и вертикальный индикатор :)

Шаг 4:

В viewDidLoad вашей tableViewController или ур ViewController пишут :)

self.tableView.rowHeight = UITableViewAutomaticDimension; 
self.tableView.estimatedRowHeight = 44.0; 

Этап 5:

Теперь откиньтесь назад, расслабьтесь, r ип код, увлечься и, пожалуйста, возвращение и принять ответ :)

EDIT

В случае интересно, что еще я мог бы написать в UITableViewController :) Просто методы Tableview исходные данные numberOfSections, numberOfRowsInSection, cellForRowAt вот и все , Больше ничего не требуется :)

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

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