webentwicklung-frage-antwort-db.com.de

Autolayout: Hinzufügen von Einschränkungen zum Superview und nicht zum Top Layout Guide?

Ich habe eine UIView in meinem UIViewController im Storyboard, die ich dem Raum mit einer Einschränkung hinzufügen möchte, die einen Abstand vom oberen Rand darstellt.

Wenn ich nun das übliche per Strg + Ziehen in die Hauptansicht des ViewControllers mache, bekomme ich nur die Option, es auf die oberste Layout-Anleitung zu setzen.

Dies ist ein Problem für mich, weil ich irgendwann in der App die Hauptansicht um 20-50px nach oben verschieben werde. Was dann passiert, ist die Ansicht, die ich nicht verschieben werde, da sie nicht auf Superview ausgerichtet ist.

Wie kann ich dies manuell im Storyboard tun oder muss ich es programmgesteuert hinzufügen?

Ich benutze xcode 6.

103
Arbitur

Rechts neben dem Wert der Einschränkungskonstante befindet sich ein Pfeil. Wenn Sie darauf klicken, erscheint ein Menü, in dem Sie auswählen können, zu welchem ​​Objekt Sie Ihre Einschränkung relativ machen möchten. Wenn Sie "Ansicht" wählen, wird es oben in der Ansicht angezeigt.

enter image description here

299
Pavel Gurov

Sie sollten dies tun können, indem Sie die gewünschte Ansicht im Storyboard markieren und dann Editor > Pin > Top Space to Superview im oberen Menü auswählen.


Dies ist in XCode 7 veraltet, siehe @ PaulGurovs Antwort.

57
dan

TL; DR: Sie können den Rand einschränken, indem Sie auf drücken Alt Taste auf der Tastatur.


Man kann auch hinzufügen, dass der vorgeschlagene Ansatz nicht wirklich gültig ist, wenn die Ansicht, die Sie anheften möchten, keine direkte Unteransicht der Ansicht ist, an die Sie sie anheften möchten. Nehmen wir an, die Ansichtshierarchie sieht so aus und Sie möchten die Bildansicht (in diesem Fall Parallax Image View) mit der Ansicht des Ansichtscontrollers (in diesem Fall View) verknüpfen.

enter image description here

Dazu machst du einfach Control + Drag vom Parallax Image View zum View. Hier werden die Standardoptionen angezeigt, bei denen Vertical Spacing to Top Layout Guide angezeigt wird, um den Parallax Image View an die obere Layoutanleitung anzuheften.

enter image description here

Sie möchten es am oberen Rand der Ansicht anheften. Um dies zu tun, müssen Sie zu den anderen Bedingungen wechseln, indem Sie drücken Alt

enter image description here

12
Zhivko Bogdanov

Ich hatte schon eine ganze Reihe von Einschränkungen und wollte sie nur ändern, anstatt sie zu brechen. Es stellt sich heraus, wenn Sie auf die Einschränkung doppelklicken, um sie zu bearbeiten, und dann auf das Objekt mit der Markierung ".Margin" klicken. Sie können das Relativ zum Rand deaktivieren, indem Sie dieses Element auswählen.

 Select the relative to margin

2

Dans Antwort funktioniert. Ich wollte nur sagen, dass, wenn Sie Ihre Ansicht in storyBoard auf y <20 setzen und Einschränkungen über das Pin-Bedienfeld konfigurieren, diese auf Superview gesetzt wird:

enter image description here

enter image description here

1
oren

Keine der obigen Antworten funktionierte für mich, stattdessen muss ich einen Hack machen, um das Top meiner Unteransicht mit dem TopView von oben zu setzen, stattdessen mit der Top-Layout-Anleitung.

  • Stellen Sie zunächst die Unteransicht vertikal mit Superview ein.
  • Ändern Sie dann die Center Y Nebenbedingungen für die Unteransicht sowie den Übersichtsbereich in Top Nebenbedingungen.

Du bist jetzt gut zu gehen.

0
Jas_meet

Wenn die Höhe der Ansicht versehentlich auf 0 eingestellt ist, erscheint KEIN vertikaler Abstand zum oberen Layout. Es erscheint jedoch ein Vertical Space to Bottom Layout Guide, der für jemanden in Apple um 2004 sinnvoll gewesen sein muss.

0
Gabriel Jensen