2016-05-14 5 views
1

Ich habe zwei UIView mit fester Größe (30, 30), ich möchte die Ansichten horizontale Mitte in Superview. Hier ist die Layoutbeschreibung.Warum kann diese Layoutbedingung nicht genügen?

H:[view1(30)]-20-[view2(30)] 
V:|-20-[view1(30)] 
V:|-20-[view2(30)] 

und fügen Sie eine Einschränkung bei horizontalen
view1.leftMargin = view2.rightMargin

Aber diese Einschränkungen nicht als meine erwarten arbeiten.
Die Laufzeitwarnung besagt, dass Constraints gleichzeitig nicht erfüllt werden können. Warum?

Ich finde eine Lösung, um die Ansichten zu zentrieren, die zwei Platzhalteransicht auf der linken Seite und rechten Seite hinzufügen, aber ich möchte wissen, warum meine erste Lösung nicht funktioniert, wie bekannt meine Einschränkungen erfüllen? Was habe ich verpasst?

+0

vertikal oder horizontal oder in beiden? – Alok

+0

@Alok horizontal, tut mir leid, ich habe die Frage geändert. – ZHENGYING

+0

Vielen Dank für die Aktualisierung, ich habe Zweifel an H: | [view1 (30)] - 20- [view2 (30)] |. Bitte mach es als H: [view1 (30)] - 20- [view2 (30)] und entferne view1.left = view2.right – Alok

Antwort

0

view1.left=view2.right und [view1(30)]-20-[view2(30)] ist confict. [view1(30)]-20-[view2(30)] bedeutet

view1.right+20=view2.left 
view1.height=30,view2.height=30 

so nicht constrainsts machen Apfel kann.

+0

danke!, aber ich weiß nicht, warum 'view1.right + 20 = view2.left' und' view1.left = view2.right' ist Konflikt? – ZHENGYING

+0

Dieser offensichtliche Konflikt. view1.left = view2.right view1.right = view1.left + 30 view2.left = view2.right-30.so können Sie view1.left + 30 + 20 = view2.right + 30 wissen. confict view1.left = view.right – xks

+0

Entschuldigung, meine letzte Einschränkung ist 'view1.leftMargin = view2.rightMargin', nicht' view1.left = view2.right', können Sie die Analyse für diese Situation geben? – ZHENGYING

0

Ich habe versucht, Ihr Problem zu lösen und zu wissen, dass mit VFL, der einzige mögliche Weg zur Zentrierung Ansicht in Super View ist durch Spacer Ansichten.

Wie Sie Ihre view1 definiert haben und view2 auch zwei spacer views definieren.

Dann ist dieses nur ein:

V:|-20-[view1(30)] 
V:|-20-[view2(30)] 
H:|[spacer1][view1(30)]-20-[view2(30)][spacer1(==spacer2)]| 

Und view1.left = view2.right nicht brauchen. Bitte entfernen Sie es.

Ausgang angehängt:
enter image description here

+0

Vielen Dank für Ihre richtige Lösung, aber ich kenne diese Lösung, ich möchte nur wissen, warum meine Lösung Einschränkungen widersprechen. warum nicht zufriedenstellen. wie kann man das wissen? – ZHENGYING