Ich würde folgendes vorschlagen:
- Fügen Sie Ihrer Sammlungsansicht eine Höhenbeschränkung hinzu.
- Stellen Sie die Priorität auf 999 ein.
- Stellen Sie die Konstante auf einen Wert ein, der sie im Storyboard angemessen sichtbar macht.
- Ändern Sie die untere Gleichheitsbedingung der Sammlungsansicht in "Größer" oder "Gleich".
- Schließen Sie die Höhenbeschränkung an eine Steckdose an.
- Gehen Sie bei jedem erneuten Laden der Daten in der Sammlungsansicht wie folgt vor:
Möglicherweise möchten Sie auch den Einschub der Sammlungsansicht berücksichtigen, indem Sie ihn zur Inhaltsgröße hinzufügen.
Codebeispiel:
CGFloat height = myCollectionView.collectionViewLayout.collectionViewContentSize.height
heightConstraint.constant = height
self.view.setNeedsLayout() Or self.view.layoutIfNeeded()
Erläuterung: Extra, Sie müssen nicht lesen, wenn Sie es verstehen. offensichtlich!!
Die Benutzeroberfläche wird versuchen, alle Einschränkungen widerzuspiegeln, unabhängig von ihren Prioritäten. Da die Höhenbeschränkung eine niedrigere Priorität von (999) und eine untere Einschränkung vom Typ größer oder gleich hat. Wenn die Höhenbeschränkungskonstante auf einen Wert festgelegt wird, der kleiner als die Höhe der übergeordneten Ansicht ist, entspricht die Sammlungsansicht der angegebenen Höhe, wodurch beide Einschränkungen erreicht werden.
Wenn die Höhenbeschränkungskonstante jedoch auf einen Wert festgelegt wird, der über der Höhe der übergeordneten Ansicht liegt, können beide Einschränkungen nicht erreicht werden. Daher wird nur die Einschränkung mit der höheren Priorität erreicht, die die größere oder gleiche untere Einschränkung ist.
Das Folgende ist nur eine Vermutung aus einer Erfahrung. So erreicht es eine Konstrante. Es wird jedoch auch versucht, den Fehler in der resultierenden Benutzeroberfläche für die andere nicht erreichte Einschränkung mit niedrigerer Priorität so niedrig wie möglich zu halten . Daher entspricht die Höhe der Sammlungsansicht der Größe der übergeordneten Ansicht.
heightConstraint.constant = collectionView.contentSize.height