Aktualisiert die Ansichtshöhe für die Sammlung, um alle Zellen in einer Tabellenansichtszelle mithilfe von automatischem Layout anzupassen

9

Ich möchte die dynamische UITableViewCell height neu in iOS 8 nutzen. Ich muss ein UICollectionView innerhalb eines UITableViewCell platzieren. Ich möchte sicherstellen, dass alle Zellen in der Sammlungsansicht auf dem Bildschirm sichtbar sind. Daher sollte die Größe der Tabellenzelle erhöht werden, damit sie in die Sammlungsansicht passt. Ich habe fast das funktioniert. Ich war einfach nicht in der Lage, die Tabellenzelle zu bekommen, die richtige Größe - es ist entweder zu lang oder zu kurz in der Höhe, und einige Layout-Probleme sind sichtbar, bis ich mit der Tabelle interagieren (mehr dazu unten).

Ich habe automatische Layouteinschränkungen für die Sammlungsansicht auf die contentView der Tabellenzelle eingerichtet: "leading", "trailing", "top" und "bottom". Ich habe dann eine Höhenbeschränkung für die Sammlungsansicht erstellt, so dass ich die constant im laufenden Betrieb aktualisieren kann, nachdem ich die passende Höhe für alle Zellen in der Sammlungsansicht berechnet habe (weil ich glaube, dass das nicht automatisch möglich ist).

Hier ist der Rest des Setups.

%Vor%

Ich habe heightForRowAtIndexPath nicht implementiert.

Diese Einstellung führt zu widersprüchlichen vertikalen Einschränkungen. Ich habe versucht, die Priorität der Beschränkungen zu reduzieren und die Beziehung in einer Reihe von Kombinationen zu ändern, aber keine führte zum gewünschten Verhalten. Wenn ich die Priorität der Höhenbeschränkung auf 999 reduziere, ist die Tabellenansichtszelle zunächst zu groß, aber nachdem ich in der Tabellenansicht nach oben und unten geblättert bin, wird die Höhe der Tabellenzelle auf die erwartete Höhe aktualisiert. Bei einigen anderen Kombinationen ist das Ergebnis entweder, dass die Tabellenzelle zu kurz ist, aber die vollständige Sammlungsansicht ausgeblendet wird, die Tabellenzelle zu kurz ist und die Sammlungsansicht abgeschnitten ist oder die Tabellenzelle basierend auf der Priorität und zu groß ist Beziehungen, die ich auf die Einschränkungen angewendet habe. Darüber hinaus werden die Auflistungsansichtszellen nicht in der richtigen Größe angezeigt, während die Ansicht animiert wird (aber bis zum Ende der Animation). Wenn ich die Tabelle neu lade, haben die Zellen der Auflistungsansicht die falsche Größe, bis ich blättern kann der Tisch.

Wie kann ich diese Darstellungsprobleme beheben, um eine dynamische Tabellenansichtszellenhöhe zu erhalten, die eine vollständig sichtbare Auflistungsansicht enthält, die die dynamische Zellengröße basierend auf der Anzeigebreite anzeigt?

    
Joey 13.04.2015, 03:24
quelle

3 Antworten

1

Nach dem, was ich von Ihnen bei der Einrichtung der collectionView-Zellen und der Größe verstehen kann, scheint es mir, dass Sie quadratische Zellen haben wollen und 4 Reihen von 7 Zellen haben und alle vollständig sichtbar sind.

Wenn Sie collectionView, das sich in der Zelle befindet, zu allen vier Rändern (oben, unten, links und rechts) Einschränkungen hinzufügen und dann der Kollektionsansicht eine Seitenverhältniseinschränkung von 7: 4 hinzufügen, sollte die Tabellenansicht in der Lage sein, zu berechnen Zellenhöhe automatisch für Sie in der richtigen Größe.

    
pteofil 24.04.2015 09:11
quelle
0

So würde ich das angehen, und ich denke, es kann alles in IB gemacht werden.

Zuerst würde ich Mindestgrößen für die CV-Zellen festlegen, dann würde ich die Umarmungspriorität des Lebenslaufs festlegen, um seinen Inhalt so eng wie möglich zu umarmen. Das sollte garantieren, dass, abgesehen von allen äußeren Einflüssen, der CV versucht, die kleinstmögliche Größe zu haben, die alle seine Zellen sichtbar macht.

Als nächstes würde ich das gleiche Spiel mit der Inhaltsansicht der TBV-Zelle und dem Lebenslauf spielen, das heißt, ich würde die Umarmungs-Priorität der Inhaltsansicht der TBV-Zelle festlegen, um den Lebenslauf so eng wie möglich zu umarmen. Auch dies sollte sicherstellen, dass externe Einflüsse vernachlässigt werden, die TBV-Zelle sollte die kleinste Größe behalten, die sie behalten muss, um den Lebenslauf vollständig anzuzeigen.

    
wltrup 21.04.2015 14:33
quelle
0

Sehen Sie sich an, wie forkingdog das gleiche Problem der dynamischen Höhen von Tabellenansichtszellen hier gelöst hat & gt; Ссылка

Sie sollten die Bildansicht für uicollectionview ausschalten können.

In seiner Tabellenansicht - anstatt die aus der Box geschätzte Zeilenhöhe zu verwenden - Du brauchst etwas wie

%Vor%     
johndpope 21.04.2015 22:26
quelle