Mein Entwurf erfordert, dass eine Schaltfläche zwischen zwei anderen Objekten zentriert ist. Eines der Objekte befindet sich in der vertikalen Mitte der Ansicht (grün). Das andere Objekt befindet sich in einiger Entfernung von der Unterkante (grün). Jetzt besteht die Aufgabe darin, das dritte Objekt (rot) zwischen den beiden anderen zu zentrieren. Ich verwende die neuen constresures von xcode6 und meine Ansicht befindet sich im wRegular hRegular-Modus. Das wäre mit Code einfach, aber ich versuche, das Storyboard dafür zu verwenden.Abhängigkeiten zum Zentrieren und Objekt zwischen zwei Objekten
Antwort
Es gibt eine Reihe von Ansätzen:
Ios 9, die am leichtesten ein vertikalen
UIStackedView
mit einemdistribution
von „gleichem Abstand“ und dannaddArrangedSubview
den drei Kreis zu definieren wäre UntersichtenEine andere Option in iOS 9 wäre zwei
UILayoutGuide
zu erstellen (was die zwei Fragezeichen in Ihrem Bild darstellen würde) , fügen Sie sie zum gemeinsamen Superview mitaddLayoutGuide
hinzu und definieren Sie sie so, dass sie die gleiche Größe haben. Die entsprechende VFL könnte wie folgt aussehen:"V:|[greenView1(==100)]-[layoutGuide1]-[redView(==50)]-[layoutGuide2(==layoutGuide1)]-[greenView2(==greenView1)]|"
In früheren iOS-Versionen, anstatt
UILayoutGuide
verwenden, können Sie nur zwei „Raum“ Ansichten erstellen (UIView
mit klarem Hintergrund, so dass sie nicht sichtbar sind), dann eine Einschränkung definieren so dass ihre Höhen identisch sind, und definieren Sie dann vertikale Abstandseinschränkungen zwischen den fünf Ansichten (die drei Kreise und die zwei Abstandhalteransichten) mit einer Konstante von Null.Es könnte wie folgt aussehen:
ich diese „Spacer“ Ansichten sichtbar gemacht haben, um die Idee zu veranschaulichen, aber natürlich würde man sie transparent sein gesetzt, so kann man nicht sehen sie in der Benutzeroberfläche.
Dies ist logisch äquivalent zu dem
UILayoutGuide
Ansatz in iOS 9, mit der Ausnahme, dass dieUIView
„Spacer“ Ansichten tragen nur ein wenig mehr Aufwand als einUILayoutGuide
. Aber in iOS-Versionen vor 9 ist dies der übliche Ansatz für dieses Problem.
Sie können es mit einem Abstandhalter tun. Befestigen Sie die Oberseite des Abstandhalters an der Unterseite des oberen grünen Kreises. Befestigen Sie die Unterseite des Abstandshalters an der Oberseite des unteren grünen Kreises. Befestigen Sie die vertikale Mitte des roten Kreises an der vertikalen Mitte des Abstandshalters. –
Einverstanden. Viele Möglichkeiten, die Katze zu enthäuten. Ich benutze einzelne Abstandhalter, so dass es mit mehr als drei Kreisen funktioniert, ohne mit Multiplikatoren zu arbeiten (obwohl Sie das jetzt auch tun können). – Rob
Beide großartige Lösungen! Ich mag, dass in der ersten Lösung der rote Knopf kein Kind der Spaceransichten sein muss. Vielen Dank. –
Ich habe den einfachsten Ansatz gefunden.
Folgen Sie einfach diesen Schritten:
- zwischen ihnen die beiden Kreis
- fügen ihren hinteren und vorderen Raum eine Ansicht hinzuzufügen. (in meinem Fall Null bis superview)
- oberen und unteren Raum von den Kreisen hinzufügen.
- jetzt Ihren roten Kreis in der kürzlich hinzugefügt Ansicht
- es horizontal und vertikal Zentrum von Alrignment Menü machen
für iOS9 setzen überprüfen http://stackoverflow.com/a/33733753/ 1067147 – WINSergey