Ich habe keine Probleme hier zu versuchen, diese Post Beschreibung Etikett zu wachsen und zu verkleinern basierend auf Inhalt Größe auf IOS9. Ich habe eine Sicht (ich werde es topView beziehen), die ich als Kopfzeile für die Tabellenansicht verwende (also wenn ich nach oben scrolle, verschwindet die Überschrift). In der TopView gibt es eine Reihe von Stack-Ansichten. Ich möchte das Postbeschreibungsetikett in der Größe basierend auf der Inhaltsgröße vergrößern und verkleinern. Ich weiß, wie man es in einem einfachen Fall macht, wo alles innerhalb der Prototypzelle ist (d. H. Geschätzte Zeilenhöhe einstellen und uitaviewautomaticDimensions setzen, sizetoFit auf Label setzen und Anzahl der Zeilen auf 0 setzen). Dies ist jedoch ein anderer Fall, da sich das Post-Beschreibungslabel nicht wirklich in der Zelle befindet, sondern in seiner Ansicht vor den Zellen der Tabellenansicht.Dynamische UILabel Größe für Ansicht vor uitableview
Beachten Sie, dass alle Elemente in der Ansicht eine statische Höhe haben, mit Ausnahme des Postdescription-Labels. Post-Beschreibungs-Label befindet sich in einer Stapelansicht, die nur links und rechts angeheftet ist (sodass oben und unten wachsen würden?). Außerdem ist die Hauptstapelansicht, die alle Elemente enthält, an den vier Seiten mit der Draufsicht angeheftet, die die Hauptstapelansicht enthält, die ebenfalls an die vier Seiten angeheftet ist. Mit dieser Einrichtung würde ich erwarten, dass die Topansicht basierend auf der Inhaltsgröße wächst und schrumpft. Allerdings sehe ich das nicht in der Ausgabe. Ich weiß nicht, ob es die Stapelansicht ist, die das Etikett nicht wachsen lässt oder die Draufsicht nicht wachsen lässt, um mehr Platz für die Stapelansicht für das Etikett zu lassen. Dank
UPDATE
Dank Riadluke, versuchte ich etwas wie vorgeschlagen, die die headerview ist Ändern der Größe nach der erforderlichen Höhe zu berechnen. Ich habe den folgenden Code in viewDidLayoutSubview gesetzt und es funktioniert mit einem Problem
postDescriptionLbl.sizeToFit()
let headerView = commentTableView.tableHeaderView!
headerView.setNeedsLayout()
headerView.layoutIfNeeded()
let height = TopStackView.frame.size.height + ImageStackView.frame.size.height + postDescriptionLbl.frame.size.height + SpacerStackView.frame.size.height + BottomStackView.frame.size.height
headerView.frame.size.height = height
commentTableView.tableHeaderView = headerView
Das Problem, das ich jetzt mit dieser Methode ist, dass, wenn die View-Controller angezeigt wird, ich physisch die postDescription Etikettenhöhe von der Standardhöhe wachsen sehen kann im Storyboard auf die gewünschte Höhe. Zum Beispiel, wenn der VC zuerst erscheint, sehe ich eine Zeile mit einem Etikett, wobei eine Zeichenfolge abgeschnitten wird, aber nach 0,5 Sekunden wachsen die Kopfzeile und das Etikett auf die gewünschte Größe. Ich weiß, dass dies erwartet würde, weil ich die Manipulation nach der viewDidLayout Subview aufruft. Ich habe mich gefragt, ob es einen besseren Weg gibt, so dass ich diesen Übergang nicht sehe und die Aussicht scheint sofort die richtige Höhe zu sein. Ie. Lassen Sie die Ansicht genau wissen, wie hoch das Label ist, um zu bestimmen, wie hoch die Headeransicht sein muss, bevor sie auf dem Bildschirm erscheint?
Danke für die Antwort riahluke. Irgendeine Idee über das Update oben? Danke – user172902
hast du systemLayoutFittingSize ausprobiert und es in viewDidLoad aufgerufen? – riadhluke