Как сделать центрированный вид с изменяемым размером на основе контента - PullRequest
1 голос
/ 07 октября 2019

Я хочу создать вид, внутри которого есть 3 метки с динамической высотой. Я хочу, чтобы ярлыки в центре текста были маленькими и увеличивались, когда текст становился больше. Приоритет для последнего ярлыка (описание).

Что я получаю

enter image description here

Ожидаемый результат

1- Небольшое описание

enter image description here

2- Большое описание

enter image description here

Также, еслиописание очень длинное, высота надписей не должна выходить за границы изображения, ограничения сверху и снизу должны

Любое исправление для этой проблемы

Ответы [ 2 ]

3 голосов
/ 07 октября 2019

вы можете использовать UIStackView для своих нужд.

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

  1. Добавить UIImageView и ограничения конфигурации:начальная, верхняя, нижняя и ширина (постоянная или пропорциональная).

  2. Добавьте UILabels (и не забудьте установить количество строк равным 0) enter image description here

  3. Выберите метки и добавьте их в Stack View. Установите значение Fill в полях Alignment и Distribution. enter image description here
  4. Добавить ограничения leading и trailing к стековому виду enter image description here
  5. Добавить вертикальные центрирующие ограничения к стековому виду enter image description here

Обновлено после редактирования в оригинальном вопросе - «если описание очень длинное, высота надписей не должна выходить за границы изображения сверху инижние ограничения должны "

Выберите Вид стека и Вид изображения и добавьте ограничения Верхний и Нижний края. enter image description here

Выберите только что добавленное ограничение Top Edge и измените Relation в Attributes Inspector на Greater Than or Equal. После этого выберите ограничение Bottom Edge и измените Relation на Less Than or Equal.

Выберите первые две метки и установите для Size Inspector Вертикальный Content Compression Resistance Priority значение 751. enter image description here

Вот и все

enter image description here enter image description here

1 голос
/ 07 октября 2019

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

в ContainerStack из изображения, для которого необходимо установить выравнивание как fill и распределение fill равным (вы можете изменить это, если хотитечтобы выровнять текстовую часть и часть изображения по-разному) вы также можете задать интервал по своему усмотрению

в стеке LabelHorizondalContainer, который необходимо установить как выравнивание центр и распределение как заливку

в стеке LabelVerticalContainer вам нужно установить в качестве выравнивания и распределения значение fill

Насколько я знаю, это должно помочь

small description

Расширенное описание

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...