UIStackView с шириной "содержимого обтекания" - PullRequest
0 голосов
/ 22 октября 2018

Проблема: Создать горизонтальный UIStackView с 2 элементами enter image description here

Ширина элемента с " Краткий текст 2 " должна быть"обернуть содержимое".Элемент с « Длинный текст 1 » должен заполнить все свободное пространство.

Помогите пожалуйста разобраться, как это можно создать в коде (язык Swift)?

1 Ответ

0 голосов
/ 22 октября 2018

Шаг 1: Перетащите StackView, добавьте в него левое, правое, верхнее / нижнее ограничение.(пока игнорируйте ошибку)

enter image description here

Шаг 2: Перетащите две метки и добавьте их в stackView (продолжайте игнорировать предупреждение)

enter image description here

Шаг 3: Теперь вам нужно устранить неоднозначность горизонтального содержимого, поэтому измените приоритет объятия содержимого левой метки на 250, покаоставив правильный заголовок содержимого надписи с приоритетом 251

enter image description here

Шаг 4: Теперь встает вопрос о содержании основы для вертикальной высоты:) Просто выберите правую метку и установите его сопротивление сжатию содержимого на 999, оставив сопротивление сжатия содержимого левой метки на уровне 751

enter image description here

Если вам интересно, что происходитс устойчивостью к сжатию контента и приоритетом объятия контента и прочим, пожалуйста, прочитайте документацию по Apple для получения более подробной информации

Просто, чтобы дать общее представление о том, что я делаю, в iOS UILabel s есть неявный размер контента, поэтому онивзять размер в зависимости от содержания.Так же как и Stack View.Теперь, поскольку StackView должен определить свою высоту на основе двух меток, которые у него есть, и обе они имеют одинаковое сопротивление сжатию содержимого и в конечном итоге имеют разную высоту, чтобы устранить путаницу, он ищет от вас дополнительной помощи.Вы делаете это, указывая, что правая метка больше сопротивляется изменению неявной вертикальной высоты по сравнению с левой меткой.

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

Подтверждение логики:

enter image description here

Об изменении стека шрифтов правой меткиВысота представления автоматически увеличивается и увеличивается также высота левой метки:)

РЕДАКТИРОВАТЬ на комментарии по OP:

Как указано в комментарии OP, что conern - это ширина, а не ширинавысота, шаг 4 не обязателен, ваша проблема решена в конце шага 3. При установке приоритета размещения контента он сам

при изменении правых меток обновлений пользовательского интерфейса контента, как показано ниже

enter image description here Это все :) Надеюсь, что помогает

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