Wie kann ich die gesamte Header-Ansicht auf UICollectionView setzen?

9

Ich möchte den Header auf die Sammlungsansicht setzen, genau wie der setTableHeader von UITableViewController.

Ich habe den Weg gefunden, den Header jedes Abschnitts in der Sammlungsansicht zu setzen, aber ich konnte nicht finden, wie man die Header-Ansicht des gesamten Headers einstellt.

Apples Verweis auf UICollectionViewLayout besagt: "Ergänzende Ansichten präsentieren Daten, unterscheiden sich aber von Zellen. Im Gegensatz zu Zellen können ergänzende Ansichten nicht vom Benutzer ausgewählt werden. Stattdessen verwenden Sie ergänzende Ansichten, um beispielsweise Kopf- und Fußzeilenansichten für einen bestimmten Abschnitt zu implementieren Für die gesamte Sammlungsansicht sind zusätzliche Ansichten optional und ihre Verwendung und Platzierung wird durch das Layout-Objekt definiert. ", aber ich weiß nicht, wie Sie die Header-Ansicht für die gesamte Sammlungsansicht implementieren.

Ich habe versucht, dies zu implementieren, indem ich ein Section-Header-View-Rechteck nur für den ersten Abschnitt gemacht habe, aber bei TableHeader war das anders.

Wenn ich in der Tabellenansicht den Inhaltsoffset auf den unteren Header setze, wird die Inhaltsgröße automatisch erweitert, so dass der Header ausgeblendet wird, obwohl einige Elemente vorhanden sind.

In der Sammlungsansicht funktioniert das Ändern des Inhalts-Offsets jedoch nur, wenn viele Elemente vorhanden sind, um einen Bildlauf durchzuführen.

Ich habe versucht, die Inhaltsgröße dynamisch zu erweitern, wenn es ein paar Elemente gibt, aber es scheint, dass es nicht gut funktioniert ...

    
glast 25.01.2013, 05:36
quelle

1 Antwort

1

Ich habe dies mithilfe eines benutzerdefinierten Layouts implementiert und die Kopfzeile jedes Scroll-Ereignisses neu positioniert. Beginnen Sie mit der Unterklasse UICollectionViewLayout, es gibt Tonnen von Tutorials im Internet, das ist ein gutes: Ссылка

Dann besteht der Trick darin, YES immer auf shouldInvalidateLayoutForBoundsChange: und prepareLayout zurückzusetzen (dh den Rahmen von layoutAttributes zu ändern) den Header basierend auf der Sammlungsansicht xOffset und yOffset.

Verwenden Sie eine zusätzliche Ansicht mit NSIndexPath 0-0.

layoutAttributesForElementsInRect: wird für jedes Bild aufgerufen. Wenn Sie also viele Elemente in Ihrer Sammlungsansicht haben, müssen Sie das Ergebnis zwischenspeichern, damit es die Leistung nicht beeinträchtigt. Alle Attribute sollten mit Ausnahme dieser einen Kopfzeile unberührt bleiben.

Quelle: Ich habe 1 Monat an diesem speziellen Thema gearbeitet.

    
Fabien Warniez 08.01.2014 04:23
quelle