2014-09-17 8 views
11

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

enter image description here

+0

für iOS9 setzen überprüfen http://stackoverflow.com/a/33733753/ 1067147 – WINSergey

Antwort

16

Es gibt eine Reihe von Ansätzen:

  • Ios 9, die am leichtesten ein vertikalen UIStackedView mit einem distribution von „gleichem Abstand“ und dann addArrangedSubview den drei Kreis zu definieren wäre Untersichten

  • Eine 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 mit addLayoutGuide 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:

    IB scene

    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 die UIView „Spacer“ Ansichten tragen nur ein wenig mehr Aufwand als ein UILayoutGuide. Aber in iOS-Versionen vor 9 ist dies der übliche Ansatz für dieses Problem.

+4

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. –

+0

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

+0

Beide großartige Lösungen! Ich mag, dass in der ersten Lösung der rote Knopf kein Kind der Spaceransichten sein muss. Vielen Dank. –

0

Ich habe den einfachsten Ansatz gefunden.

newly added view is in blue color. and in my case label should be in center

Folgen Sie einfach diesen Schritten:

  1. zwischen ihnen die beiden Kreis
  2. fügen ihren hinteren und vorderen Raum eine Ansicht hinzuzufügen. (in meinem Fall Null bis superview)
  3. oberen und unteren Raum von den Kreisen hinzufügen.
  4. jetzt Ihren roten Kreis in der kürzlich hinzugefügt Ansicht
  5. es horizontal und vertikal Zentrum von Alrignment Menü machen

alignment