2017-02-28 7 views
0

Ich stehe vor einem Layout-Problem mit einem UITableViewCell, das (von oben nach unten) aus (1) einem UIStackView, (2) einem UIView mit einer festen Höhe und (3) einem anderen UIStackView besteht. Im oberen UIStackView möchte ich einige Instanzen von UILabel abhängig von einer Datenstruktur vertikal platzieren. Diese Etiketten können in der Höhe variieren. Im unteren UIStackView möchte ich einige Instanzen von UIButton vertikal platzieren. Diese Zahl hängt auch von einigen Datenstrukturen ab.UITableViewCell mit zwei UIStackViews

Das Problem hat mit AutoLayout zu tun (zumindest denke ich, es tut). Wie würde ich die Einschränkungen so einrichten, dass das UITableViewCell sowohl genügend Platz für das obere UIStackView als auch das untere UIStackView schafft, wenn es auf dem Bildschirm platziert werden muss. Das Layout der Zelle wird in einer separaten XIB-Datei definiert.

Bisher habe ich eine Höhenbeschränkung auf dem oberen UIStackView. Abhängig von der Rahmenhöhe der Etiketten wird die Höhe der Stapelansicht angepasst. Aber es stellt sich heraus, dass die Höhe immer den gleichen Wert hat. Ich weiß das, weil ich zwei Instanzen dieser bestimmten UITableViewCell in meinem TableView brauche. Das untere UIStackView hat KEINE Höhenbeschränkung und hat immer ein korrektes Layout.

Muss ich die Eigenschaften für die vertikale Umarmungs-/Kompressionswiderstandspriorität anpassen?

Jede Hilfe wird sehr geschätzt.

Antwort

0

Vielleicht habe ich Ihr Problem falsch verstanden, aber warum korrigieren Sie die Höhe des oberen StackView, wenn die Höhe dynamisch sein soll? Sie sollten diese Einschränkung entfernen und die inneren Größen (unter "Komprimierungswiderstandspriorität") von beiden StackView auf "Platzhalter" setzen, um IB glücklich zu machen. Das oberste StackView verhält sich dann genauso wie das untere StackView, vorausgesetzt, Sie haben keine anderen Einschränkungen.

+0

Sie haben nicht missverstanden. Ich habe die Höhenbeschränkung hinzugefügt, um IB glücklich zu machen. Nach dem Entfernen dieses Constraint und dem Setzen der Intrinsic Size auf 'Placeholder' nur für das oberste StackView scheint alles gut zu funktionieren. Habe meinen Tag gerettet, vielen Dank! – Raoul

+0

Toll, froh, dass ich helfen konnte! Vergiss nicht, die Antwort als akzeptiert zu markieren;) – AgentCorleone

Verwandte Themen