2016-02-24 2 views
3

Итак, у меня есть простой UIView с UILabel, содержащимся внутри. В настоящее время высота UIView жестко запрограммирована, что является проблемой, когда текст UILabel достаточно длинный, чтобы контент требовал больше высоты, чем предоставляет UIView.Изменение размера UIView на основе текста UILabel в Swift

Есть ли простой способ рассчитать соответствующую высоту для UIView, чтобы показать все содержимое содержащейся в UILabel?

Спасибо!

+1

Autolayout - ваш друг – Wain

+0

Как автозагрузка поможет мне в этом случае? Текст UILabel изменяется по длине. – ardevd

ответ

9

Если вы используете автоматическую раскладку:
Вам просто нужно прикрепить ведущий, отставая, верхней и нижней части вашего UILabel его надтаблицы (ведущий, задний, верхний и нижний).
Установите numberOfLines на 0, это означает, сколько вам нужно. Теперь вы можете ограничить ширину вашего экземпляра UIlabel определенным числом или установить preferredMaxLayoutWidth, в основном вы говорите, что хотите, чтобы ваш ярлык создал другую строку, если текст больше этой ширины.
Теперь наступает магия макета, каждый вид имеет свойство intrinsicContentSize, на UILabel соответствует размеру, занимаемому текстом. Это приводит к тому, что UILabel «подталкивает» границы своего наблюдения, чтобы адаптироваться к его размеру содержимого.
Конечно, у супервизора не должно быть ограничений по высоте.

Если вы не используете автоматическую раскладку:
После установки текст, который вы можете отправить наклейке метод - (CGSize)sizeThatFits:(CGSize)size, установив фиксированную ширину и CGFLOAT_MAX в высоту, он возвращает размер, занимаемый полный текст таким образом, вы кабиной соответственно установите рамку надзора.

+0

Отличный! Спасибо большое. Это спасло мои часы! –

+0

@ Андрея, брат, не могли бы вы взглянуть на мой вопрос https://stackoverflow.com/questions/46034278/how-to-adjust-uiview-height-according-to-the-collection-view-content-height- in-s? –

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