LOOK, KEINE SPACERS!
Aufgrund der Vorschläge im Kommentarbereich meiner ursprünglichen Antwort, insbesondere der hilfreichen Vorschläge von @ Rivera, habe ich meine ursprüngliche Antwort vereinfacht.
Ich verwende Gifs, um zu veranschaulichen, wie einfach dies ist. Ich hoffe, Sie finden die Gifs hilfreich. Nur für den Fall, dass Sie ein Problem mit Gifs haben, habe ich die alte Antwort unten mit einfachen Screenshots versehen.
Anleitung:
1) Fügen Sie Ihre Schaltflächen oder Beschriftungen hinzu. Ich benutze 3 Tasten.
2) Fügen Sie der Übersicht eine mittlere x-Einschränkung von jeder Schaltfläche hinzu:
3) Fügen Sie der unteren Layouteinschränkung von jeder Schaltfläche eine Einschränkung hinzu:
4) Passen Sie die in Nr. 3 oben hinzugefügte Einschränkung wie folgt an:
a) Wählen Sie die Einschränkung aus,
b) entfernen Sie die Konstante (auf 0 gesetzt),
c) ändern Sie den Multiplikator wie folgt: Nehmen Sie die Anzahl der Tasten + 1 und setzen Sie den Multiplikator von oben beginnend auf buttonCountPlus1: 1 und dann auf buttonCountPlus1 : 2 und schließlich buttonCountPlus1: 3 . (Ich erkläre, woher ich diese Formel habe, in der alten Antwort unten, wenn Sie interessiert sind).
5) Hier läuft eine Demo!
Hinweis: Wenn Ihre Schaltflächen größere Höhen haben, müssen Sie dies im konstanten Wert ausgleichen, da sich die Einschränkung am unteren Rand der Schaltfläche befindet.
Alte Antwort
Trotz der Aussagen von Apples Dokumenten und Erica Saduns ausgezeichnetem Buch ( Auto Layout Demystified ) ist es möglich, Ansichten ohne Abstandshalter gleichmäßig zu platzieren . Dies ist in IB und im Code für eine beliebige Anzahl von Elementen, die Sie gleichmäßig platzieren möchten, sehr einfach. Alles, was Sie brauchen, ist eine mathematische Formel namens "Abschnittsformel". Es ist einfacher zu tun als zu erklären. Ich werde mein Bestes geben, indem ich es in IB demonstriere, aber es ist genauso einfach, es in Code zu tun.
In dem fraglichen Beispiel würden Sie
1) Beginnen Sie, indem Sie für jedes Etikett eine Mittenbeschränkung festlegen. Dies ist sehr einfach zu tun. Steuern Sie einfach das Ziehen von jedem Etikett nach unten.
2) Halten Sie die Umschalttaste gedrückt, da Sie genauso gut die andere Einschränkung hinzufügen können, die wir verwenden werden, nämlich die "Layoutanleitung von unten nach unten".
3) Wählen Sie die "Layoutführung von unten nach unten" und "Horizontal im Container zentrieren". Tun Sie dies für alle 3 Etiketten.
Wenn wir das Etikett nehmen, dessen Koordinate wir bestimmen möchten, und es durch die Gesamtzahl der Etiketten plus 1 dividieren, können wir IB eine Zahl hinzufügen, um den dynamischen Ort zu erhalten. Ich vereinfache die Formel, aber Sie können sie verwenden, um den horizontalen Abstand oder sowohl den vertikalen als auch den horizontalen Abstand gleichzeitig festzulegen. Es ist super mächtig!
Hier sind unsere Multiplikatoren.
Label1 = 1/4 = 0,25,
Label2 = 2/4 = .5,
Label3 = 3/4 = 0,75
(Bearbeiten: @Rivera kommentierte, dass Sie die Verhältnisse einfach direkt im Multiplikatorfeld verwenden können und xCode mit rechnen!)
4) Wählen wir also Label1 und die unterste Einschränkung. So was:
5) Wählen Sie im Attributinspektor das "Zweite Element" aus.
6) Wählen Sie in der Dropdown-Liste "Erstes und zweites Element umkehren".
7) Nullen Sie die Konstante und den wC hAny-Wert auf Null. (Sie können hier einen Offset hinzufügen, wenn Sie ihn benötigen).
8) Dies ist der kritische Teil: Addieren Sie im Multiplikatorfeld unseren ersten Multiplikator 0,25.
9) Wenn Sie gerade dabei sind, setzen Sie das obere "Erste Element" auf "CenterY", da wir es auf die y-Mitte des Etiketts zentrieren möchten. So sollte das alles aussehen.
10) Wiederholen Sie diesen Vorgang für jedes Etikett und stecken Sie den entsprechenden Multiplikator ein: 0,5 für Etikett2 und 0,75 für Etikett3. Hier ist das Endprodukt in allen Ausrichtungen mit allen kompakten Geräten! Super einfach. Ich habe mir viele Lösungen angesehen, die Unmengen von Code und Abstandshalter beinhalten. Dies ist bei weitem die beste Lösung, die ich zu diesem Thema gesehen habe.
Update: @kraftydevil fügt hinzu, dass die Anleitung für das untere Layout nur in Storyboards und nicht in xibs angezeigt wird. Verwenden Sie in xibs 'Bottom Space to Container'. Guter Fang!