Могу ли я переместить ограничения автомакета в Interface Builder?

Иногда ограничения автомакета привязываются к неправильной точке привязки — например, когда я хочу, чтобы элемент управления был привязан к элементу управления над ним, а ограничение автомакета привязывалось к нижней части окна. Есть ли способ переместить ограничение? Искусство ASCII должно сделать это более ясным. Вот что у меня есть:

+------------------------+
|                        |
| [x] Some checkbox      |
|                        |
| [x] Another checkbox   |
|     |                  |
|     | ← autolayout     |
|     |   constraint     |
|     |                  |
+-----+------------------+

И это то, что я хочу вместо этого:

+------------------------+
|                        |
| [x] Some checkbox      |
|     | ← A.C.           |
| [x] Another checkbox   |
|                        |
|                        |
|                        |
|                        |
+------------------------+

Я могу привязать ограничение к верхнему флажку, переместив нижний флажок вверх, но это не то, чего я хочу, я хочу, чтобы вертикальное пространство было больше. (Флажки приведены только для иллюстрации, мой реальный вариант использования имеет другое представление.)


person zoul    schedule 30.06.2012    source источник


Ответы (3)


  1. Установите 2 флажка
  2. Нажмите значок «H» в правом нижнем углу построителя интерфейса.
  3. Выберите Интервал по вертикали.

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


Теперь выберите бесполезные ограничения и удалите их:

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

person HKTonyLee    schedule 05.10.2012
comment
+1 Ты только что спас меня от безумия. Последние пару часов я боролся с макетом из книги «Изучение какао на Mac» и только усугублял ситуацию. Это именно то, что мне было нужно для решения моих проблем. - person MetalMikester; 05.08.2013

Попробуйте переместить нижний флажок так, чтобы он стал распоркой между собой и флажком выше. Затем щелкните стойку и щелкните поле атрибутов на правой панели. Там вы сможете снять флажок «стандартный» и установить желаемый интервал.

person David Chu    schedule 30.07.2012

Нет, вы не можете переместить ограничение или изменить его относительно другого представления. Как говорит Дэвид Чу, вы можете перемещать представления до тех пор, пока они автоматически не получат желаемое ограничение, а затем изменить значение ограничения, чтобы переместить представление обратно туда, где вы хотите. Однако вы также можете вручную создать желаемое ограничение, а затем удалить автоматическое ограничение, которое вам не нужно (иногда с некоторыми трудностями). Вот как для вашего случая:

Установите 2 флажка, затем используйте меню «Редактор» > «Закрепить» > «Вертикальный интервал», чтобы добавить желаемое ограничение (или используйте среднюю из 3 кнопок в правом нижнем углу вида макета IB, чтобы получить такое же меню). В этот момент нежелательное автоматическое ограничение должно стать избыточным и изменить цвет с фиолетового на синий. Затем вы можете выбрать его и удалить. Каждый тип ограничений может быть создан с помощью элементов меню «Закрепить» и «Выровнять».

Я обнаружил, что получить желаемые ограничения всегда возможно, хотя это битва с автоматическими ограничениями, которые добавляет Xcode, а иногда и головоломка, чтобы найти, почему они не меняют цвет с фиолетового на синий. Например, при непосредственном перемещении представления после добавления какого-либо пользовательского ограничения вы обнаружите, что Xcode, вероятно, удалил большинство добавленных вами ограничений и повторно добавил автоматические, даже для других, казалось бы, случайных представлений в окне, а не только для того, которое вы взолнованный! Удачи.

person Pierre Houston    schedule 28.08.2012