Swift — почему элементы не имеют одинаковых размеров?

#swift #xcode #view #uikit

Вопрос:

У меня Vertical Stack View на экране есть ( Alignment = Fill, Distribution = Fill ).

В нем есть сверху донизу:

  1. Label (никаких ограничений)
  2. Vertical Stack View ( height=21 )
  3. Horizontal Slider ( height=21 )
  4. Label (никаких ограничений)

Я ожидал, что обе мои метки (элементы 1 и 4) будут одинакового размера и будут занимать большую часть экрана, а 2-й и 4-й элементы, следовательно, будут находиться в центре экрана. Но на самом деле высоты моей нижней метки достаточно только для заполнения текста, в то время как моя верхняя метка занимает большую часть пространства.

Я попытался изменить Distribution вид стека на Fill Proportionally , но в этом случае моя верхняя метка становится меньше нижней.

Почему это происходит? Как я могу сделать так, чтобы мои ярлыки были одинаковой высоты?

введите описание изображения здесь

введите описание изображения здесь

PS Я заметил предупреждение о неоднозначности приоритета контента, но я не могу понять, что мне с этим делать

введите описание изображения здесь

Комментарии:

1. Приоритет объятий-это действительно проблема.

2. @мэтт , я читал о приоритете объятий и сопротивлении сжатию, но есть проблема с другими ярлыками. Эти свойства моих меток «ТАЙМЕР РЕДАКТИРОВАНИЯ» и «ДРУГОЙ» одинаковы, поэтому я не могу понять, почему они имеют разные размеры.

3. Потому что они равны. Без дополнительной информации представление стека не знает, какое представление растягивать. Так что он просто выбирает одного.

Ответ №1:

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

Предупреждение о неоднозначности приоритета контента касалось не их, а горизонтальных меток. Чтобы удалить предупреждение при сохранении их размещения, я изменил распределение горизонтального вида стека на Равное центрирование.