2015-08-18 3 views
0

enter image description hereКаким образом в UITableViewCell может быть или не может быть изображение с использованием Autolayout?

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

Высота текста (количество строк) является вариантом независимо от того, есть изображение или нет.

Как разместить этот вид ячейки с помощью функции AutoLayout? Спасибо заранее.

+0

Итак, когда нет изображений, покажите вторую строку текста? –

+0

@ KelvinLau Nope, высота текста также вариант. Спасибо, что вас интересует вопрос. – Evan

+0

Вы можете установить ограничения (верхнее пространство, нижнее пространство, центр X, ведущее пространство, конечное пространство) – anhtu

ответ

0

Комбинация ограничений по вертикали/горизонтали может достичь желаемого эффекта. Чтобы получить переменную высоту текста, вы можете установить свойство lines в инспекторе атрибутов на 0. Текст будет делать вторую строчку автоматически, в то время как ваши ограничения вертикальной компоновки будут толкать все, что связано с UILabel.

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

0

Я бы использовал UILabel (myLabel) с номеромOfLines = 0 и контейнер UIView (myImageContainerView) для хранения изображений. И myLabel, и myImageContainerView будут определять свою собственную высоту на основе их содержимого. Если нет изображений, контейнерImageView будет иметь нулевую высоту. Затем вы просто устанавливаете ограничения между этими представлениями.

Произошла попытка представить это диаграмму ASCII: The | (Символ трубы представляет собой вертикальный интервал для ограничения) < -> представляет собой горизонтальный интервал ограничение

---------------------------- 
     | 
<-> myLabel     <-> 
     | 
<-> myImageContainerView <-> 
     | 
----------------------------- 

Наконец понадобится динамическая высота UITableViewCell которой можно достичь, установив это на Tableview:

myTableView.rowHeight = UITableViewAutomaticDimension;

+0

Большое спасибо. Но мне кажется, что мне нужно расставить ячейку в коде? – Evan

+0

@Evan Вы можете достичь этого и в IB. Установите UIImage внутри myImageContainerView, чтобы иметь верхнее, ведущее, конечное и нижнее ограничение, чтобы высота myImageContainerView зависела от изображения. Если вы установите нулевое изображение, myImageContainerView будет иметь нулевую высоту. UILabel с номеромOfLines = 0 автоматически создает динамическую высоту –

+0

Спасибо миллион! – Evan

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