Ich würde vorschlagen, die folgend:
- Fügen Sie Ihrer Sammlungsansicht eine Höhenbeschränkung hinzu.
- Setzen Sie die Priorität auf 999.
- Setzen Sie die Konstante auf einen Wert, der sie nur auf dem Storyboard sichtbar macht.
- Ändern Sie die untere Gleichheitsbedingung der Sammlungsansicht auf größer oder gleich.
- Verbinden Sie die Höhenbeschränkung mit einer Steckdose.
- Jedes Mal, wenn die Daten über die Sammlung Ansicht nachladen wie folgt vor:
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 Du verstehst es. 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. Wann immer die Konstante für die Höheneinschränkung auf einen Wert kleiner als die Höhe der übergeordneten Ansicht festgelegt wird, entspricht die Ansicht der Sammlung der angegebenen Höhe, wodurch beide Einschränkungen erreicht werden.
Wenn jedoch die Constraint-Konstanten auf einen höheren Wert als die Höhe der Parent-View gesetzt ist, können beide Constraints nicht erreicht werden. Daher wird nur die Beschränkung mit der höheren Priorität erreicht, die die größere oder gleiche untere Einschränkung ist.
Das folgende ist nur eine Vermutung von einer Erfahrung. Also, es erreicht eine Beschränkung. Aber es versucht auch, den Fehler in der resultierenden UI für die andere nicht erreichte Einschränkung mit niedrigerer Priorität so niedrig wie möglich zu machen. Daher entspricht die Höhe der Sammlungsansicht der Größe der übergeordneten Ansicht.
die Sammlung Ansicht neu zu laden Sie haben Höhenbeschränkung Steckdose nehmen von ColletionView und stellen Sie die Höhe wie folgt ein: 'heightConstraint.constant = collectionView.contentSize.height' –
Verwenden Sie ein benutzerdefiniertes Layout oder das von Apple bereitgestellte UICollectionViewFlowLayout? –
Ich benutze die Standard-UICollectionViewFlowLayout – charbinary