Ich habe eine Collection-Ansicht in einer Collection-Ansicht geschachtelt. Was ich getan habe, um zu versuchen, dass sich die Zellengröße basierend auf dem Inhalt dynamisch ändert, ist eine Steckdose für die Höhe der Kindsammlung zu erstellen und ihre Konstante zu ändern, nachdem die Inhaltsgröße erhalten wurde.CollectionView Zelle ändert die Größe nach dem Bildlauf - AutoLayout
Dies ist eine Bildschirmshow meiner IB Constraints, und ich verwende die Höhe markiert.
So habe es die Kind Sammlung Ansicht (Aqua Farbenkasten) beschränkte auf die Zelle der Mutter auf 4 Seiten mit Höhe konstant.
In meiner benutzerdefinierten Zellklasse, die das Kind Sammlung Ansicht hält, ich bin Einstellung der Höhe wie:
let contentHeight = innerCollectionView.collectionViewLayout.collectionViewContentSize.height
innerCollectionHeight.constant = contentHeight
Und dann Controller-Klasse in meiner Ansicht, die die übergeordnete Sammlung Ansicht in viewDidLoad hält i spezifizieren die geschätzte Objektgröße mit:
let flowLayout = outerCollectionView.collectionViewLayout as! UICollectionViewFlowLayout
flowLayout.estimatedItemSize = CGSize(width: view.frame.width - 20, height: view.frame.height/4)
flowLayout.minimumLineSpacing = 10
flowLayout.sectionInset = UIEdgeInsets(top: 0, left: 10, bottom: 10, right: 10)
das Ergebnis ist, dass auf die Anfangslast alles richtig angezeigt wird, aber nach der oberen Zelle scrollen, die hat zwei Reihen von Daten (grün Anzahl Icons) selbst die gleiche wie die anderen sein einstellt. Sie können in dem unten stehenden gif sehen, dass die Ansicht der Kindsammlung (die aquaisch gefärbte Box) immer noch die gleiche Größe hat, es ist die Elternzelle (orange Box), die in der Größe reduziert wurde.
Ich bin hier, was stapfte zu tun.
das Bit, wo es wieder auf die volle Größe geht, ist nur das gif Resting es nicht wirklich das tun.