Dies ist mein Setup: Ich habe eine UIScrollView
mit führende, obere Testkante auf 0 gesetzt. Darin füge ich eine UIStackView
mit diesen Einschränkungen hinzu:
stackView.centerYAnchor.constraintEqualToAnchor(selectedContactsScrollView.centerYAnchor).active = true
stackView.leadingAnchor.constraintEqualToAnchor(selectedContactsScrollView.leadingAnchor).active = true
In der Stapelansicht füge ich einige Ansichten hinzu.
Mein Problem ist, dass aufgrund der Einschränkungen die erste Ansicht, die der Stapelansicht hinzugefügt wird, auch die Vorderkante = 0 hat.
Wie kann ich der ersten Ansicht etwas Polster hinzufügen? Ohne die Einschränkungen der Bildlaufansicht anzupassen.
ios
swift
uiscrollview
uistackview
Adrian
quelle
quelle
Antworten:
Die von Ihnen bereitgestellte Lösung fügt keine Auffüllung für Ihre Ansichten in Ihrem UIStackView hinzu (wie Sie es in der Frage wollten), sondern fügt einen Hinweis für das UIStackView hinzu.
Eine Lösung könnte darin bestehen, eine weitere UIStackView in Ihre ursprüngliche UIStackView einzufügen und die Führung zu dieser neuen UIStackVIew zu geben. Fügen Sie dann Ihre Ansichten zu dieser neuen UIStackView hinzu.
Hinweis, Sie können dies vollständig mit Interface Builder tun. Mit anderen Worten, Sie müssen keinen Code dafür schreiben.
quelle
Wenn die
isLayoutMarginsRelativeArrangement
Eigenschaft true ist, werden in der Stapelansicht die angeordneten Ansichten relativ zu den Layouträndern angeordnet.Es wirkt sich jedoch auf alle angeordneten Ansichten innerhalb der Stapelansicht aus. Wenn Sie diese Auffüllung nur für eine angeordnete Ansicht wünschen, müssen Sie verschachtelt verwenden
UIStackView
quelle
isLayoutMarginsRelativeArrangement
ist ein Getter, Setter istlayoutMarginsRelativeArrangement
. Ich kann die Antwort nicht bearbeitenlayoutMarginsRelativeArrangement
stattdessen verwenden. Offizielle Dokumentation: developer.apple.com/reference/uikit/uistackview/…stackView.layoutMargins = UIEdgeInsetsMake(0, 20, 0, 20); [stackView setLayoutMarginsRelativeArrangement:YES];
Ich habe festgestellt, dass Einschränkungen in einer Stapelansicht nicht funktionieren oder etwas seltsam erscheinen.
(Zum Beispiel, wenn ich der in der Bildstapelansicht ausgewählten Einschränkung eine führende / nachfolgende Einschränkung hinzufüge, die auch der Sammlungsansicht eine führende, aber keine nachfolgende Einschränkung hinzufügt; und dies ist mit Sicherheit ein Konflikt).
Wählen Sie Folgendes aus, um Layoutränder für alle Ansichten in der Stapelansicht festzulegen:
Stack View > Size Inspector > Layout Margins > Fixed
Hinweis: Die
"Fixed"
Option wurde früher aufgerufen"Explicit"
, wie in den Screenshots gezeigt.Fügen Sie dann Ihre Polsterung hinzu:
quelle
Was für mich funktioniert hat, ist, der Stapelansicht eine weitere UIView hinzuzufügen, die nur ein Abstandshalter ist (funktioniert zumindest mit stackView.distribution = .Fill):
quelle
schnell 3: Sie müssen nur den Versatz einstellen um:
Stellen Sie sicher, dass diese Einschränkung nach Ihnen festgelegt wurde
parentView.addArrangdSubView(firstView)
quelle
Wenn Sie nur eine führende Auffüllung benötigen, können Sie die Ausrichtung der Stapelansicht auf "Nachlauf" setzen und dann für jede der enthaltenen Unteransichten eindeutige führende Einschränkungen festlegen.
Als Bonus können Sie auch die Ausrichtung der Stapelansicht auf "Mitte" setzen und dann die Einschränkungen "Führen" und / oder "Nach" verwenden, um jedem Element auf beiden Seiten eine eigene Polsterung zu geben.
quelle
Diese Frage hat bereits gute Antworten. Ein Vorschlag: Verwenden Sie die
spacing
Eigenschaft, um den Abstand zwischen den Ansichten festzulegen. Für die erste und die letzte Ansicht gibt es zwei Optionen: Setzen Sie entweder Einfügungen wie von @tolpp vorgeschlagen oder fügen Sie eine Einschränkung hinzu, die dem übergeordneten Element (Stapelansicht) mit einer Konstante zum Hinzufügen von Auffüllungen zugeordnet ist.quelle
Wir haben transparente Komponenten (z. B. UIButton / UIView) als erstes und letztes untergeordnetes Element von UIStackView hinzugefügt. Stellen Sie dann die Breite dieser unsichtbaren untergeordneten Elemente ein, um die Polsterung anzupassen.
quelle
Die Lösung wäre, eine reguläre Ansicht in der Stapelansicht zu haben, die alle Ansichten enthält, denen Sie Einschränkungen hinzufügen möchten, und dann können Sie Einschränkungen für Ihre Elemente hinzufügen, die relativ zu den Ansichten in der Stapelansicht sind. Auf diese Weise können Ihre ursprünglichen Ansichten in der Stapelansicht führende und nachfolgende Einschränkungen aufweisen.
Dies kann im Interface Builder und programmgesteuert erfolgen.
quelle
Es scheint, dass die Lösung ziemlich einfach war. Anstatt:
Ich habe gerade geschrieben:
quelle