Wie center-horizontal zwei Bezeichnungen?
Habe ich ziemlich einfache Anforderungen, wenn zwei Etiketten müssen horizontal zentriert. So, ich habe gewählt und wählte Editor->align->Mitte horizontal. Dann fügte nach oben Raum bis zum container-constraint auf die beiden zu. Ich muss auch die Etiketten shrink/grow bezüglich der Inhalte und Größe. Jedoch, IB zeigt Fehler und mehrere Warnungen. Ich könnte die Etiketten schrumpfen/wachsen nur durch das hinzufügen einer pin zwischen Ihnen (horizontal space), aber Sie wird nicht zentriert sein in diesem Fall. Hier sind die screenshots:
hier sind die Fehler und Warnungen:
UPDATE theraven hat einen interessanten Vorschlag, um mit dummy-Ansicht zum zentrieren es horizontal und die Belegung der beiden labels zu. Ich habe entfernt alle bestehenden Einschränkungen, hat diese dummy-anzeigen und Zentrum X Zentrum Y-Einschränkungen zu. Dann verzehrte zwei Etiketten zu (zusätzlichen horizontalen Raum-Einschränkungen). Allerdings bekomme ich noch einen Haufen Fehler und Warnungen:
UPDATE2 Nur aktualisieren Sie die Frage, aber noch keine gültige Antwort gefunden. @Theraven Problemumgehung funktioniert für iPhone4, iPhone4S, iPhone5-und iPhone5S -, aber es ist nicht real zentrieren, sondern eher ein workaround. Daher für iPhone6 und iPhone6 Plus-funktioniert es nicht, wie führende und nachgestellte Leerzeichen behoben werden und nicht automatisch die Größe für die größere Breite.
straightforward requirements where two labels must be centered horizontally
- wollen Sie Ihre Ansicht in zwei Teile geteilt (Links und rechts) und dann die Etiketten zentriert in jedem Teil?- ja.
- Dies ist noch unklar. Wollen Sie gleich viel Raum zwischen linkem Rand<->erste label <-> zweites label <->rechter Rand. Oder gleich Raum zwischen linkem Rand<->erste label <->Mitte von Bildschirm und in der Mitte des Bildschirms<->zweites label<->rechter Rand. Der Unterschied ist, dass der Raum im Zentrum wird größer sein, im zweiten Szenario. Sobald Sie das klären, werde ich die Korrektur meiner Antwort.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was Sie tun können, ist fügen Sie die beiden Etiketten, um eine andere Ansicht, wie eine container-Ansicht. Dann müssen Sie bis Mitte dieses einer horizontal und fügen Sie die notwendigen Einschränkungen.
Hinzufügen, die mit
UIView
können Sie sowohl Etiketten, gehen Sie zuEditor -> Embed In -> View
.Dann würden Sie brauchen, um hinzuzufügen, Einschränkungen zu machen, die mit Blick passen die beiden labels. So etwas wie dieses:
Ersten Label (linke):
Zweite Label:
Dann mit der Ansicht sollte die Größe, da passen beide Bezeichnungen. Dann alles, was Sie tun müssen, ist fügen Sie die top-offset-Einschränkung für diese container-Ansicht und eine für die horizontale Ausrichtung, die es in der übergeordneten Ansicht.
Diese Weise, die mit Blick wird so stark wachsen, wie es passen muss sowohl Etiketten und der Raum zwischen Ihnen ist und wird immer zentriert in der übergeordneten Ansicht.
Nahm ich einen screenshot von meinem test-Einschränkungen, falls es dir mehr hilft.
Ich hoffe, das war, was Sie gesucht haben.
Um dieses Problem zu lösen, verwenden Sie eine leere UIView zwischen den beiden labels und zentrieren es horizontal. Dann stecken Sie die zwei Bezeichnungen beiden Seiten der zentrierten leere Ansicht. Es ist Allgemeine Konvention zu verwenden, spacer Ansichten wie diese in der auto-layout.
Ich weiß wirklich nicht, wie die Idee der Zugabe einer anderen Ansicht nur für sake of estethic.
Eine weitere alternative ist die horizontal-center der linken Ansicht und horizzontally Raum die Ansicht von rechts einer Menge X mit der linken ein.
Dann geben die horizontal-align contraint den ersten Blick einen negativen Wert gleich der erste Blick, der Breite plus die Hälfte die Aussicht auf Abstand. Oder nutzen Sie Multiplikatoren wie sagte in einem vorherigen Kommentar.
Funktioniert aber nur mit fester Breite Ansichten, denke ich.
Verwenden zentriert
UIStackView
als container für zwei Etiketten mit einem Abstand nötig.Ich nicht wirklich verstehen, was Sie tun möchten.
Die Fehlermeldung, die Sie erhalten (im ersten Screenshot) ist, dass Sie fehlen Einschränkung für die x-position des labels.
Für UILabel Sie müssen die Einschränkung sowohl für y und für x-position in Bezug auf die container-Ansicht, wenn Sie Sie ausgewählt haben, beide und wählte Editor->align->center, horizontal, sagen Sie einfach, dass label1.center.x = label2.center.x.
Sie müssen noch sagen, wo Sie sich in der container-Ansicht, die Sie Hinzugefügt haben den oberen Raum, um Behälter, so dass man auch die y-position, aber Sie wollte nicht sagen, wo die x-position sein sollte.
Sagte Sie
Aber, wo Sie sein sollten-in Bezug auf die container?
Dank
Mit spacer Ansichten ist die bestmögliche Lösung, die ich herausfinden konnte, auch wenn es hässlich aussieht und für die Entwickler. Die Nutzer würden nicht einmal wissen, was Los ist hinter den kulissen und wenn die spacer
UIView
können Sie immer wieder verwendet werden.