Простой способ упорядочить UIButtons в IB с помощью автозапуска

#ios #autolayout #interface-builder #swift3

#iOS #автозаполнение #конструктор интерфейса #swift3

Вопрос:

Я знаю, что в жизни нет простого способа, но я подумал, что спрошу.

У меня есть 10 UIButtons, расположенных в определенном порядке (например, дерево с бранчами).

Я бы хотел, чтобы эти кнопки становились меньше / больше при запуске приложения с разными размерами экрана (например, iPhone 5s или 6 или 6 и т. Д.).

Можно ли настроить автоматическую компоновку таким образом, чтобы кнопки оставались в том же порядке, но становились меньше / больше в IB?

Спасибо

Редактировать

Это похоже на то, чего я пытаюсь достичь…. Мой рисунок не симметричен.

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

Ответ №1:

Это звучит как большая проблема для UIStackView .

Задайте кнопкам ограничения для соотношения сторон (относительно кнопки), а затем CTRL перетащите кнопки в супервизор и выберите Equal Widths ИЛИ Equal Heights .

Затем вы можете выбрать все кнопки и перейти в Редактор (вверху экрана) -> Встроить в -> Просмотр стека. Установите для представления стека Distribution Fill Equally значение и задайте ограничения представления стека относительно супервизора.

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

1. Я не уверен, что правильно следую вашему примеру, но, похоже, он не работает… Эти кнопки имеют специфическое расположение, похожее на дерево…. они не расположены один под другим.

2. Ах, я понимаю. Вместо этого вы можете расположить каждую кнопку, центрируя их оси x и y по отношению к super view, а затем смещая (регулируя множитель) центр, пока они не окажутся там, где вы хотите, затем выполните те же ограничения для высоты / ширины и соотношения сторон.

3. Вам также придется добавить дополнительные ограничения, чтобы кнопки не перекрывались. То, что вы ищете, довольно сложно. Если вы не можете понять это, я могу попытаться опубликовать пример решения завтра

4. Пожалуйста, смотрите отредактированный вопрос с изображением. Это не совсем то, чего я пытаюсь достичь, поскольку это симметрично, а мой рисунок — нет!