2017-08-28 1 views
1

Ich habe zwei Ansichten, die ich so platzieren möchte, dass sie horizontal gleichmäßig verteilt sind.Xcode Interface Builder: Stellen Sie den Mittelpunkt X einer Ansicht auf das dritte Drittel seiner Superansicht ein

Ich mag würde thier Center X so definieren, dass sie die Drittel und zwei Drittel der Breite des Super aber ich habe keine Einschränkung Einstellung gefunden, dass Sie das tun können.

Können Sie mir sagen, wie das erreicht werden kann?

enter image description here

+1

Muss ich liebe diese Skizze: D – LinusGeffarth

Antwort

4

Sie können eine Center X Einschränkung mit folgenden Einstellungen verwenden:

Center X

Für den zweiten Blick die Multiplier2/3 natürlich sein muss.

Ergebnis: Result

1

Wählen Sie Zentriert X aus der Untersicht und die Superview (Bildschirm nur die letzte) enter image description here

Ändern Sie den Multiplikator: 2: 3 für die erste, und 4: 3 für das zweite:

enter image description here

0

Sie sagten:

Ich habe zwei Ansichten, die ich so platzieren möchte, dass sie horizontal gleichmäßig verteilt sind.

Ich möchte ihr Center X so definieren, dass sie die dritte und zwei Drittel der Breite der Superview sind, aber ich habe keine Einschränkung gefunden, die Ihnen erlaubt, dies zu tun.

Es ist erwähnenswert, dass "gleichmäßig verteilt" und "Center x das ist und ⅔ der Superview" nicht wirklich dasselbe sind. Betrachten Sie das Szenario "⅓ und ⅔": Stellen Sie sich eine Superansicht mit einer Breite von 300 Pixeln vor, die die Punkte ⅓ und at auf 100 bzw. 200 setzen würde. Wenn Sie dann zwei Teilansichten mit einer Breite von 50 Pixeln hinzufügen, beträgt der linke und rechte Rand jeweils 75 Pixel, der mittlere Rand jedoch 50 Pixel. Wenn die Untersichten breiter sind, wird es schlechter (z. B. wenn die Untersichten 100 Pixel breit sind, würde es 50 Pixel-Ränder links und rechts geben, aber absolut keinen Zwischenraum dazwischen).

Wenn Sie sie wirklich gleichmäßig verteilen möchten (wobei der horizontale Abstand zwischen den Untersichten mit dem Abstand zwischen den Untersichten und den Kanten ihrer Superansicht übereinstimmt), können Sie Layout-Hilfslinien verwenden, wenn dies programmgesteuert geschieht.

Also, vorausgesetzt Sie bereits zwei Subviews erstellt haben und haben von ihrer Größe und vertikalen Beschränkungen gesorgt hat, können Sie tun:

// create three layout guides 

let layoutGuides = (0 ..< 3).map { _ in UILayoutGuide() } 

// add them to your view 

layoutGuides.forEach { view.addLayoutGuide($0) } 

// create dictionary for VFL 

let views = ["layoutGuide0": layoutGuides[0], "layoutGuide1": layoutGuides[1], "layoutGuide2": layoutGuides[2], "subview0": subviews[0], "subview1": subviews[1]] 

// define horizontal constraints where three layout guides are the same width 

let vfl = "H:|[layoutGuide0][subview0][layoutGuide1(==layoutGuide0)][subview1][layoutGuide2(==layoutGuide0)]|" 

let constraints = NSLayoutConstraint.constraints(withVisualFormat: vfl, metrics: nil, views: views) 
NSLayoutConstraint.activate(constraints) 

Wenn Sie dies in IB tun wollen, können Sie nicht Erstellen Sie diese Art von Layout-Hilfslinien, aber Sie können drei unsichtbare "Spacer" -Ansichten (dh einfache UIView Objekte mit Alpha von 0) mit Zwangsbedingungen hinzufügen, die ihre jeweiligen Breiten gleich halten.Dann kleben Sie diese fünf Ansichten (die zwei Teilansichten plus die drei Spacer-Ansichten) in der Stapelansicht (oder, wenn Sie ein Masochist sind, umgehen Sie die Stapelansicht und fügen Sie die sechs führenden/nachlaufenden Einschränkungen zwischen diesen fünf Teilansichten hinzu) und Sie erreichen das gewünschte Effekt von zwei gleichmäßigen Unteransichten (zwischen diesen drei nicht sichtbaren "Spacer" -Ansichten).

Also, das ist, wie es aussieht (was die drei „Spacer“ Ansichten sichtbar, so dass Sie sehen können, was los ist):

enter image description here

Der Netto-Effekt, wenn man diese drei Distanz Ansichten geben ein alpha von 0 (für sie unsichtbar zu machen) ist wie folgt:

enter image description here

Verwandte Themen