Как сделать так, чтобы UILabel занимал только необходимое пространство без дополнительных отступов? - PullRequest
0 голосов
/ 08 мая 2020

У меня особая проблема, когда я имею дело с моей меткой в ​​вертикальном, а затем в горизонтальном виде стека.

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

Проблема в том, когда метка установлен в 0 - метка расширяется за пределы того, что ей требуется, добавляя отступы выше и ниже метки.

Я действительно проверил, что это не проблема с ограничениями, откуда представление стека начинается под imageView, так как предупреждающая метка правильно перемещается вверх при выравнивании представления стека по «верху», но метка все еще остается по центру.

Все было сделано в раскадровках без кода.

Взгляните на изображения, может быть, кто-нибудь поможет мне и узнает, как я могу решить эту проблему.

Желаемый эффект

Desired Effect

Что происходит при запуске приложения

What occurs upon running the application

Проверка правильности прикрепления представления стека к представлению изображения путем выравнивания по верхнему краю Verifying that the stack view is correctly pinned to the image view by aligning top

Ограничения

Constraints involved

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

Ответы [ 3 ]

0 голосов
/ 08 мая 2020

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

Что вы можете сделать: избавиться от этого нижнего ограничения (не давать вертикального нижнего ограничения stackView) или, может быть, лучше установить приоритет вертикального захвата содержимого предупреждающей метки на большее значение. enter image description here

0 голосов
/ 09 мая 2020

Здесь предупреждение UILabel занимает оставшееся доступное пространство, попробуйте добавить пустой UIView во второе представление стека, которое вы сохранили для более позднего этапа разработки. Это будет действовать как разделитель.

Также не забудьте вызвать warningLabel.sizeToFit() внутри viewDidLoad()

0 голосов
/ 08 мая 2020

Вы можете добиться этого, вызвав yourLabel.sizeToFit()

Выше будет динамически регулировать высоту метки в зависимости от количества места, которое занимает ваш текст.

...