Создание динамически изменяемого размера UILabel в конструкторе интерфейса Xcode - PullRequest
0 голосов
/ 28 мая 2018

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

Вот что я хочу, чтобы он сделал.

Скажем, вы просматриваете его на iPhone.Я хочу, чтобы это было 16 пунктов далеко от любого края, центрированного в середине.(Высота не имеет значения ни в одном из этих случаев)

Однако, когда экран становится шире, я хочу, чтобы UILabel растягивалась так, чтобы она была на расстоянии 16 точек от каждого края, пока не достигнет, скажем, 500 ширины.Как только он достигнет ширины 500, я не хочу, чтобы он стал шире.Это то место, где 16 точек с обеих сторон увеличиваются, сохраняя метку в центре.

Теперь вы просматриваете ее на iPad-ландшафте.UILabel имеет ровно 500 точек в ширину и в центре.

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

Спасибо за ваше внимание.Вся помощь приветствуется.

1 Ответ

0 голосов
/ 28 мая 2018

Вы можете сделать это с 3 ограничениями:

  1. центрируйте метку по горизонтали в представлении
  2. установите ограничение ширины <= 500 </li>
  3. установите ведущийограничение по пространству 16. Присвойте этому приоритету <1000. </li>

Когда изображение широко (как на iPad), ярлык растянется до полной ширины 500. Auto Layout будет держать метку по центру, и он будет стараться изо всех сил, чтобы удовлетворить 3-е ограничение, сохраняя начальное пространство как можно ближе к 16.Он решает нарушить это ограничение, поскольку приоритет меньше 1000.

Когда представление является узким (как на iPhone), метка будет иметь начальный пробел 16 (и конечный пробел16 потому что метка находится в центре).Ширина будет тем, что осталось, потому что это удовлетворяет ограничению width <= 500.

...