Xcode 4 und Interface Builder: Bearbeiten der vertikalen Abstandsbeschränkung (Anchor Top, nicht Bottom)

8

Ich habe ein Widget, das nicht korrekt auf dem Gerät angeordnet ist (sein sieht OK in IB aus, aber es ist nicht ganz richtig). Das Widget ist ein Label und befindet sich ungefähr auf dem Bildschirm. Der Interface Builder gab ihm eine vertikale Raumbeschränkung mit einem "unteren Anker". Hier bedeutet unten der untere Bildschirmrand (anstatt ein Widget unten oder Anker zum oberen Bildschirm).

Ich bin im Inspektor, aber ich sehe nicht, wie ich zu einem Top-Anker wechseln soll (am besten zum Widget oben). Ich habe versucht, Apples Dokumente und Einschränkungen bearbeiten , aber es war verwirrend und hat nicht erklärt, wie man die Änderung vornimmt ( oder ich habe die Diskussion verpasst - das waren 7 Sätze.)

Unten sehen Sie eine Bildschirmaufnahme unter Interface Builder, die die vertikale Raumbeschränkung zeigt, die am unteren Bildschirmrand verankert ist. Und seine Attribute lassen viel zu wünschen übrig - Equal, Constant und Priority helfen nicht wirklich.

Kann jemand Constraints bearbeiten? Insbesondere möchte ich (1) den Anker eines vertikalen Spacers von unten zu oben ändern; und (2) verankern Sie sich gegen das Widget oben und nicht am oberen Bildschirmrand.

    
jww 01.01.2013, 04:20
quelle

2 Antworten

32

Wählen Sie durch Klicken bei gedrückter Umschalttaste das Element "Eingebettet" und "Berechnet" aus.

Wenn diese beiden Elemente ausgewählt sind, verwenden Sie das Kontextmenü:

Dieses Menü ist zusammen mit der sorgfältigen Auswahl der Elemente von zentraler Bedeutung für die problemlose Bearbeitung von Einschränkungen in IB. Wählen Sie in Ihrem Fall das zentrale Element, das Pin-Menü. Wählen Sie Vertikaler Abstand - dadurch wird eine neue Einschränkung für den vertikalen Abstand zwischen Ihren beiden Elementen erstellt. Alternativ können Sie ein einzelnes Element auswählen und "Top space to superview" festlegen, um nach oben statt nach unten zu klicken.

Sie können jetzt den vertikalen Abstand zum unteren Rand der Ansicht auswählen und löschen. IB würde es Ihnen nicht erlauben, dies vorher zu löschen, da Sie einen vollständigen, nicht mehrdeutigen Satz von Einschränkungen haben müssen. Nachdem Sie Ihre neue Einschränkung für den vertikalen Abstand hinzugefügt haben, haben Sie dies jetzt.

Um dies weiter zu veranschaulichen, hier ist ein leerer View-Controller, mit einem einzelnen Textfeld, das ich gezogen habe:

Alle Einschränkungen sind violett, was bedeutet, dass IB sie für mich hinzugefügt hat (sie sind Systembeschränkungen) und sie können nicht entfernt werden - sie sind die minimalen Einschränkungen, die zum Positionieren und zur Größe des Textfelds benötigt werden.

Nun wähle ich das Textfeld aus und fixiere den oberen Platz in der Übersicht:

Nun können Sie sehen, dass sich die beiden vertikalen Platzbeschränkungen in Blau geändert haben (sie sind jetzt Benutzereinschränkungen) und sie haben eine dickere Erscheinung im Editor. Dies bedeutet, dass einer von ihnen gelöscht werden kann. Ich wähle die Einschränkung für den unteren Raum und drücke delete:

Beachten Sie, dass dies immer noch das Aussehen einer Benutzereinschränkung hat - aber wenn ich versuche, es zu löschen, wird IB automatisch die Systembeschränkungspinning am Ende der Superansicht neu erstellen, um uns wieder auf Platz eins zu bringen.

Ich habe darüber und ähnliche Auto-Layout-Themen geschrieben, hier .

    
jrturton 01.01.2013, 08:34
quelle
-1

Ich habe ein Wort für Autolayouts. Wenn es funktioniert, funktioniert es, aber wenn es nicht funktioniert, dann benutze die altmodische Methode (benutze den Code)

    
zyzzyxx 21.05.2013 22:00
quelle