6

Ich habe eine benutzerdefinierte UICollectionViewLayout die Verwendung des selbst Sizing Mechanismus in iOS 8. Meine UICollectionViewCell ‚s preferredLayoutAttributesFittingAttributes ihre bevorzugte Größe zurückzukehren implementieren macht, berechnet Auto-Layout. Das funktioniert gut.preferredLayoutAttributesFittingAttributes nicht für ergänzende Ansichten genannt

Allerdings habe ich erwartet, dass preferredLayoutAttributesFittingAttributes auch für zusätzliche Ansichten funktioniert, aber es wird nie aufgerufen. Es ist schließlich auf UICollectionReusableView definiert.

Wenn dieser Mechanismus nur für Zellen gilt, was ist der richtige Weg, um automatisches Layout zu verwenden, um zusätzliche Ansichten in einem benutzerdefinierten UICollectionViewLayout zu formatieren?

Antwort

1

preferredLayoutAttributesFittingAttributes auf ergänzende Ansichten so lange genannt werden, da sie auf die folgenden Anforderungen in Ihrem UICollectionViewLayout Unterklasse entsprechen:

  1. Die Zusatz Ansicht wird angelegt mit einem nicht (soweit ich das sagen kann!) Nullrahmen in prepareLayout
  2. Layout-Attribute werden für die ergänzende Ansicht bereitgestellt in layoutAttributesForSupplementaryViewOfKind:atIndexPath:
  3. der Ergänzungsansicht sichtbar ist gemäß layoutAttributesForElementsInRect:
  4. Schließlich en sicher, dass die elementKind Spiele collectionView:viewForSupplementaryElementOfKind:atIndexPath: in Ihrer Collection herauf, wenn der Zusatzes Ansicht über dequeueReusableSupplementaryViewOfKind:forIndexPath:

Zusammengefasst aus der Warteschlange entfernt wird: UICollectionViewLayout ein böses Tier ist, aber wenn gezähmt sollte preferredLayoutAttributesFittingAttributes Ihren Zusatz Ansicht des anrufen.

+0

Aber die Wahrheit ist, dass Self-Sizing-Zellen nicht wirklich sehr gut funktionieren, so dass man nicht überrascht sein kann, wenn selbst-dimensionierende zusätzliche Ansichten auch nicht funktionieren. – matt

+0

Sie funktionieren nicht sehr gut, aber das bedeutet nicht, dass die Methode nicht aufgerufen werden sollte;) – Warpling

Verwandte Themen