Ich habe mich in letzter Zeit mit Autolayouts beschäftigt und bin festgefahren bei einem wirklich trivialen Problembeispiel. Ich habe eine Ansicht, dass ich oben auf dem Bildschirm sitzen und die Hälfte der Bildschirmhöhe einnehmen möchte. Einfach vor dem automatischen Layout - einfach anbringen und anweisen, dass es vertikal erweitert werden soll, wenn die Größe der Übersicht geändert wird.
Jetzt kann ich für mein ganzes Leben nicht sehen, wie es geht. Folgendes bekomme ich, wenn ich versuche, dies einzurichten:
Die Beschränkung des unteren Speicherplatzes ist auf "gleich 284" festgelegt, was für mich absolut und absolut nutzlos ist, wenn ich zum iPhone4-Layout wechsle, da 284 Punkte am unteren Bildschirmrand verbleiben und die Ansicht auf nicht mehr die Hälfte verkleinert wird Größe des Bildschirms. Und es gibt keine Möglichkeit, diese Einschränkung so einzustellen, dass sie einem Bruchteil der Höhe einer anderen Ansicht entspricht.
Nachdem ich eine Weile gekämpft habe, kann ich mir dies nur vorstellen, indem ich eine andere Ansicht unter dieser Ansicht einführe, ihre Höhen gleichmäßig festnehme, sie über und untereinander sitzen lasse und dann die zweite (untere) Ansicht als unsichtbar einstelle .. was ein bisschen hässlich erscheint!
Vermisse ich etwas Offensichtliches?
quelle
Antworten:
Dies ist jetzt in IB ab [mindestens] Xcode 5.1.1 möglich. Obwohl ich einige Zeit gebraucht habe, um herauszufinden, ist es eigentlich super einfach:
Erstellen Sie zunächst eine grundlegende Einschränkung für die obere Ausrichtung (Sie müssen auch die unteren, linken und rechten Einschränkungen wie gewohnt festlegen). Wählen Sie dann die Einschränkung aus und navigieren Sie zum Attributinspektor :
Dann können Sie den Multiplikator einstellen. Wenn Sie möchten, dass 50% der Superansicht angezeigt werden, belassen Sie
1
diese Option, da sie in der Mitte des Supers ausgerichtet ist. Dies ist auch eine großartige Möglichkeit, Ansichten zu erstellen, bei denen es sich auch um andere Prozentsätze handelt (z. B. 25% der Superansicht).quelle
First Item
istView.Top
nichtView.Center Y
. Andernfalls wird es ja nur zentriert. Sie müssen auch sicherstellen, dass andere Einschränkungen richtig eingestellt sind, um die anderen Kanten der Ansicht zu behandeln.Storyboard-Lösung, bei der Sie das genaue Verhältnis zwischen beliebigen Ansichten festlegen können:
Jetzt:
PROFITIEREN!!!
PS Beachten Sie auch, dass diese Methode mit Ansichten auf verschiedenen Verschachtelungsebenen funktioniert und (offensichtlich) für die Breite gilt
PPS Manchmal kann es hilfreich sein, das erste und zweite Element der Einschränkung "umzukehren" oder den umgekehrten Multiplikator festzulegen (z. B. 2 statt 0,5) (diese Methoden sind jedoch nicht hilfreich, wenn Sie nicht verstehen, wie Ansichten miteinander in Beziehung stehen).
quelle
Nach etwas mehr Zeit habe ich mir Folgendes ausgedacht.
Ich nehme es als Antwort zur Kenntnis, aber es ist nicht sehr befriedigend, da davon ausgegangen wird, dass Sie dies in Interface Builder nicht tun können, aber die richtige Einschränkung kann anschließend im Code hinzugefügt werden als:
Grundsätzlich wird ein Multiplikator von 0,5 gegen die Höhe von self.view gesetzt, der auf Upperview wirkt. Ich musste die Priorität der unteren vertikalen Speicherplatzbeschränkung in IB auf weniger als 1000 festlegen, um eine Reihe von Laufzeitnachrichten über das Aufheben von Einschränkungen zu vermeiden.
Wenn also jemand in Interface Builder zeigen kann, wie das geht, würde das meine Frage besser beantworten, sonst denke ich, dass dies so gut ist, wie es (vorerst) geht ???
quelle
Etwas einfacher und direkter als die Methode als die Antwort von Fjodor Volchyok. - Halten Sie die Steuertaste gedrückt und klicken Sie auf die Unteransicht. - Halten Sie die Befehlsschaltfläche gedrückt, ziehen Sie den Cursor auf die Übersicht und klicken Sie auf die Übersicht. -Wählen Sie "Seitenverhältnis".
-Dann klicken Sie auf den Größeninspektor. - Doppelklicken Sie dann auf die Einschränkung.
- Stellen Sie sicher, dass für beide Elemente "Höhe" ausgewählt ist.
- Ändern Sie dann den "Multiplikator" für die Hälfte des Bildschirms oder den gewünschten Bruchteil der Übersicht auf 0,5.
quelle
Es gibt auch eine andere Möglichkeit im Code, falls Sie 2 Ansichten haben, die beide dieselbe Höhe haben sollten: Stellen Sie einfach die Höhe von Ansicht2 auf die Höhe von Ansicht1 ein (der Trick hier besteht nicht darin, die Höhe von Ansicht1 explizit festzulegen).
quelle
Schnelle Version von Metes Antwort:
quelle