Autolayout: добавить ограничение в супервизор,а не в руководство по макету?


У меня есть UIView в моем UIViewController в раскадровке, который я хочу добавить ограничение на пространство, которое просматривает расстояние от верхнего края.

теперь, когда я делаю обычное с помощью ctrl + drag к главному виду ViewController, я получаю только возможность установить его в верхнее руководство по компоновке.

Это проблема для меня, потому что в какой-то момент в приложении Я собираюсь переместить основной вид вверх вокруг 20-50px и что происходит тогда, что вид у меня не будет двигаться... потому что его не выровнены супервизор.

Как я могу вручную сделать это в раскадровке или мне нужно добавить его программно?

Im с помощью xcode 6.

7 102

7 ответов:

справа от значения константы ограничения находится стрелка. Если вы нажмете на него, появится меню, в котором вы можете выбрать, что именно вы хотите сделать своим ограничением относительно. Если вы выберете "вид", то он прикрепит его к верхней части представления.

enter image description here

вы должны быть в состоянии сделать это, выделив вид, который вы хотите в раскадровке, а затем выбрав Editor > Pin > Top Space to Superview в верхнем меню.


это устарело в XCode 7, см. Вместо этого ответ @PaulGurov.

можно также добавить, что если представление, которое вы пытаетесь закрепить, не является прямым подвидом представления, к которому вы хотите его прикрепить, предложенный подход на самом деле недействителен. Допустим, иерархия представлений выглядит так, и вы хотите закрепить представление изображения (Parallax Image View в этом случае) к виду контроллера вида (View в данном случае).

enter image description here

чтобы сделать это вы просто управления + перетащить С Parallax Image View к View. Это представляет выбор по умолчанию, где вы можете увидеть Vertical Spacing to Top Layout Guide пин-код Parallax Image View к верхнему руководству по компоновке.

enter image description here

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

enter image description here

У меня уже была целая куча ограничений, и я просто хотел их изменить, а не сломать. Оказывается, если вы дважды щелкните на ограничение для редактирования, а затем нажмите на элемент, который имеет ".Маржа", вы можете просто отключить" относительно маржи", выбрав этот пункт.

Select the relative to margin

ответ Дэна работает. Я просто хотел заявить, что если вы установите свой вид в раскадровке на y

enter image description here

enter image description here

Если высота вида случайно установлена в 0, вертикальное пространство для верхнего направляющего выступа макета не появится. Однако появится вертикальное пространство для Нижнего руководства по компоновке, которое должно было иметь смысл для кого-то внутри Apple около 2004 года.

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

  • во-первых, установите центр подвида вертикально с superview.
  • затем измените Центр Y ограничения для подвида, а также супервизора к Top ограничения.

теперь вы можете идти.