it-swarm.com.ru

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

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

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

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

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

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

103
Arbitur

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

enter image description here

299
Pavel Gurov

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


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

57
dan

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


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

enter image description here

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

enter image description here

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

enter image description here

12
Zhivko Bogdanov

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

 Select the relative to margin

2
christophercotton

Дэн ответ работает. Я просто хотел заявить, что если вы установите для вашего view в storyBoard значение y <20 и сконфигурируете ограничения с помощью панели контактов, то для top будет установлено superview:

enter image description here

enter image description here

1
oren

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

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

Тебе хорошо идти сейчас.

0
Jas_meet

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

0
Gabriel Jensen