Используя "Автоматический макет", как сделать две метки на одной и той же "линии" динамическими по ширине (с учетом того, насколько они должны быть одинаковыми)?
Скажем, у меня два UILabels, один из них - URL, а один - таймер:
[http://website.com/link/to/specific/story] [9m 42s]
Но "таймер" UILabel сильно меняет ширину. Иногда это просто 12s
, например, иногда это 125h 32m 8s
. Там много изменчивости. Я хочу, чтобы таймер UILabel занимал столько же ширины, сколько ему нужно, а метка URL-адреса занимала все остальное. Это означает, что если таймер длиннее, более короткие URL-адреса и т.д.
Как это сделать в Auto Layout? Предпочтительно в Interface Builder?
Ответы
Ответ 1
Вы должны установить сопротивление сжатию, метка URL должна иметь более низкое значение;
Установите горизонтальное пространство между метками в постоянное (например, ноль или по умолчанию);
Задайте ширину для каждой метки и выберите соотношение "меньше" или "больше", эти значения задают пределы для сокращения/расширения вида.
Ответ 2
Здесь сопротивление сжатия становится важным. Поскольку метка URL должна сначала сокращаться (чтобы разместить пространство для метки таймера), сопротивление сжатию метки URL должно быть ниже сопротивления сжатия метки таймера (конечно, в горизонтальном направлении). Вы можете легко установить этот атрибут в IB.
![]()