Ich muss drei dynamische Spalten mit jeweils einem festen Prozentsatz der Gesamtbreite erstellen. Nicht Drittel, sondern unterschiedliche Werte. Die folgende Abbildung zeigt beispielsweise drei Spalten: Die erste ist 42% breit, die zweite 25% breit und die dritte 33% breit.
Bei einem 600-Pixel-Viewcontroller wären dies 252, 150 bzw. 198 Pixel.
Für alle nachfolgenden Anzeigegrößen (z. B. iPhone 4-Querformat (960 breit) oder iPad 2-Hochformat (768 breit) möchte ich jedoch, dass die relativen Prozentsätze gleich sind (nicht die oben angegebenen Pixelbreiten).
Gibt es eine Möglichkeit, dies mit Storyboards zu tun (dh ohne Code)? Ich kann dies problemlos im Code tun, aber mein Ziel ist es, so viel wie möglich von dieser Anzeigelogik in das Storyboard zu integrieren.
quelle
Mit der Einführung von UIStackView durch Apple wurde die Arbeit erheblich vereinfacht.
Methode 1: Verwenden von Nib / StoryBoard:
Sie müssen nur drei Ansichten im Interface Builder hinzufügen und in die Stapelansicht einbetten
Wählen Sie stackView aus und geben Sie mit safeArea eine Einschränkung für führende, nachfolgende, obere und gleiche Höhe an
Klicken Sie auf Attributinspektorbereich und legen Sie StackView horizontal und verteilt fest, um sie proportional zu füllen
[ 3
Geben Sie die Beschränkung auf drei Ansichten mit führenden, nachfolgenden, oberen und unteren Ansichten mit den jeweiligen Seiten an.
Methode 2: Programmatisch:
Ausgabe:
Arbeitet mit Landschaft & Porträt
Demo-Projekt - https://github.com/janeshsutharios/UIStackView-with-constraints
https://developer.apple.com/videos/play/wwdc2015/218/
quelle
Ich denke, dies kann detaillierter erklärt werden, so dass es einfacher auf eine beliebige Anzahl von Ansichten angewendet werden kann, die feste prozentuale Layouts innerhalb einer Übersicht erfordern.
Ansicht ganz links
SuperView.Leading
SuperView.Height
Zwischenansichten
SuperView.Height
left
rechts vom Nachbarn festAnsicht ganz rechts
left
rechts vom Nachbarn festright
zuSuperView.Trailing
Alle Ansichten
Top Layout Guide.Top
undTop Layout Guide.bottom
. In der obigen Antwort wird angemerkt, dass dies auch durch Einstellen der gleichen Höhe für die benachbarte Ansicht erfolgen kann.quelle