Подтвердить что ты не робот

Равная ширина и равное расстояние между кнопками в автозапуске

Я пытаюсь использовать ограничения автоопределения для автоматического изменения размера нескольких кнопок аналогичного размера, чтобы дать следующий эффект:

Перед изменением размера

Before stretching

Желаемый эффект после изменения размера

After stretching

Как вы можете сказать, я хочу, чтобы кнопки имели одинаковый размер, и я также хочу, чтобы расстояние между каждой кнопкой составляло 20 точек. Сначала это кажется довольно простым, поэтому я устанавливаю следующие ограничения:

  • Кнопки: пробел из левого соседа = 20 (включая кнопки слева и справа)
  • Кнопки: пространство от правого соседа = 20 (включая кнопки слева и справа)
  • Кнопки: та же ширина

Что на самом деле происходит после изменения размера

enter image description here

Когда в предварительном просмотре или когда я тестирую запуск приложения в своем iPhone/симуляторе, кнопка изменяет размер и даже не соответствует тому же ограничению ширины, которое я установил для него. Фактически, вид, содержащий виды, также изменяет размеры, чтобы они соответствовали новым размерам кнопок. Кто-нибудь знает, как исправить эту проблему исключительно в построителе интерфейса?

4b9b3361

Ответ 1

Настройка:
- равная ширина всех кнопок
- горизонтальный интервал между всеми кнопками
- ведущий для просмотра первой кнопки и трейлинг для просмотра последней кнопки

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

Ответ 2

В построителе интерфейса вы устанавливаете ограничения расстояния между кнопками, как описано выше. Затем вы можете выполнить команду - выбрать все из них и указать ограничение "Равная ширина" для применения к выбранным объектам.

Ответ 3

Наконец, я забвение, как решить эту проблему. Я проверяю, что это работает как шарм.

  • добавить ограничения для элементов пространства с маркой 20 единиц.
  • добавить ограничение возрастов
  • теперь сложная часть
    • для каждого элемента добавьте ограничение равной ширины в родительский
    • выберите все новые ограничения и измените его свойства.
    • установить множитель в значение 1:5
    • установите константу в -24 (6 разделение между элементами и родительским краем дает 120, это умноженное на значение множителя 1:5 дает 24)
    • обновить фреймы элементов

Что это! Рисунок ниже показывает, как он работает в построителе интерфейса:

результат построения интерфейса

Задайте имитируемый размер для "свободной формы" и проверьте разную ширину (я устанавливаю его на 330).

Ответ 4

Эта проблема, по-видимому, связана с неправильными content hugging priority и content compression Resistance priority. Таким образом, вы должны установить их как низкое обтягивание содержимого и высокое сопротивление сжатию (все они должны иметь одинаковое значение).

Поскольку обнимание содержимого - это свойство, которое сопротивляется представлению для роста и сжатию содержимого. Устойчивость к сопротивлению - это противодействие виду, чтобы сжиматься. Для получения дополнительной информации об этом вы можете найти Question.