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

112

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

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

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

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

Я использую xcode 6.

Arbitur
источник
Можете ли вы перетащить курсор к нужному объекту в структуре документа слева? - Объекты сцены на этом скриншоте: ptgmedia.pearsoncmg.com/images/chap5_9780672335761/elementLinks/…
Woodstock
Я пробовал и то же самое, результат тот же
Arbitur

Ответы:

306

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

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

Павел Гуров
источник
6
Аллилуйя! Я не знал, что буду делать, когда они удалили меню Editor -> Pin.
Джереми Хикс,
4
не могу поверить, что не видел этого раньше. Потрясающие.
zumzum
9
Просто примечание для людей, которые так же невежественны, как я -> возможно, вы не сможете внести это изменение, если представление, в которое вы добавляете ограничение, не находится под верхним руководством по макету. У меня был вид над верхним руководством по макету, а «Верхнее руководство по макету» не было вариантом в раскрывающемся меню. Это, вероятно, утверждение для не новичков вроде меня :)
Райан Джеймс
2
Речь идет об этих мелких тонкостях Xcode. Это ТАК много делает. :)
March
Просто краткое пояснение, которое меня смутило: несмотря на то, что на изображении отмечен флажок Top Layout Guide, если вы хотите закрепить представление в верхней части представления, например, на самой верхней части устройства, выберите «View».
micnguyen 03
57

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


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

Дан
источник
Работает как шарм - XCode 6.3
Коротков
4
Они удалили «булавку» из меню редактора в Xcode 7. Есть ли новые решения?
Kyle G
14

TL; DR: вы можете ограничить поле, нажав Altклавишу на клавиатуре.


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

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

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

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

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

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

Живко Богданов
источник
Очень полезный совет. Это действительно решило мою проблему.
Machado
У меня это работает, но я не знаю, как добавить несколько ограничений одновременно. Теперь мне нужно добавлять одно за другим, чтобы занять время.
Дюк Нгуен,
3

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

Выберите относительно маржи

christophercotton
источник
Это было то, что я искал, когда приехал сюда! Спасибо
сети,
1

Ответ Дэна работает. Я просто хотел заявить, что если вы установите свое представление в StoryBoard на y <20 и настроите ограничения через панель контактов, оно установится на супервизор:

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

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

Орен
источник
0

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

Габриэль Дженсен
источник
0

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

  • Сначала установите центр subview по вертикали с помощью superview.
  • Затем измените ограничения Center Y для subview, а также superview на ограничение Top .

Теперь тебе хорошо идти.

Jas_meet
источник