iOS Autolayout, um meine Ansicht zwischen zwei Ansichten zu zentrieren


77

So richten Sie das automatische Layout in Interface Builder ein, um Ansichten vertikal anzuordnen, wie im Bild gezeigt:

planen

Top viewan der oberen Bildschirmkante Bottom viewbefestigt, an der unteren Bildschirmkante befestigt. My viewsollte zwischen Draufsicht und Unteransicht zentriert sein (also Abstand zu Top viewentspricht gleich Abstand zu Bottom view)

Antworten:


110

Der Weg, dies zu tun, besteht darin, 2 unsichtbare "Spacer" -Ansichten zwischen Ihren sichtbaren Ansichten zu haben.

Sie können Leerzeichen nicht gleich hoch machen. Sie verwenden jedoch die "Spacer" -Ansichten und platzieren sie zwischen Ihren Ansichten (mit 0 Lücken zu den umgebenden Ansichten).

Dann geben Sie diesen Ansichten gleiche Höhen und sie verschieben Ihre Ansichten, um die My Viewmit gleichem Abstand zum Bottom Viewund zu zentrieren Top View.

dh so ...

V:|[Top View][spacer1][My View][spacer2(==spacer1)][Bottom View]|

EDIT - Ein anderer Weg

Ich habe mir gerade einen anderen Weg überlegt. Sie könnten einen unsichtbaren Container haben UIView, der zwischen Top Viewund Bottom Viewohne Lücke liegt.

Dann platzieren Sie My Viewdiese unsichtbare Ansicht und zentrieren sie vertikal.


1
Warum nicht einfach die Höhe von oben und unten gleich halten und die mittlere Ansicht im übergeordneten Element zentrieren?
Antonio E.

5
Nun, das würde funktionieren. Nur dass das nicht die Frage ist. Das Bild in der Frage zeigt deutlich die Draufsicht und die Unteransicht mit unterschiedlichen Höhen. Außerdem wird gefragt, ob eine Ansicht genau zwischen zwei Ansichten zentriert werden soll. Es wird nicht gefragt, ob eine Ansicht in der Übersicht zentriert werden soll.
Fogmeister

1
@brigadir Ja, in einer der Schaltflächen unten rechts im Interface Builder gibt es Optionen für "Frames aktualisieren, um Einschränkungen anzupassen" und auch "Constraints auf Frames aktualisieren". Du willst diesen zweiten.
Fogmeister

1
Ich denke, er sagte, dass "Ein anderer Weg" besser sei als die ursprüngliche Antwort, nicht dass es einen dritten Weg gäbe, der besser wäre. :)
James Richard

2
Ich habe gerade Ihren anderen Weg benutzt, unglaublich einfach einzurichten, danke!
user3344977

45

Eine weitere Lösung besteht darin, eine unsichtbare Ansicht zwischen Draufsicht und Botom-Ansicht hinzuzufügen und meine Ansicht in die Mitte dieser Ansicht zu platzieren:

Zentriertes UIView


1
So ein genialer Hack! Vielen Dank
Maximelc

15

(5 Jahre später) Ich habe die kanonischste Lösung gefunden:

UILayoutGuide wurde speziell eingeführt, um diese Art von Aufgaben zu lösen (seit iOS 9).

Verwenden Sie Layout-Anleitungen, um die Dummy-Ansichten zu ersetzen, die Sie möglicherweise erstellt haben, um Zwischenansichtsräume oder Kapselungen in Ihrer Benutzeroberfläche darzustellen - Ref docs

Es funktioniert ziemlich gut im Code, aber leider unterstützt Interface Builder keine benutzerdefinierten Layout-Anleitungen.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.