Das Problem ist, dass die Anzahl der Spalten in der CollectionView bei Rotation nicht bei 7 (der gewünschten Menge) bleibt. Welche Codeänderung ist erforderlich, um dies zu beheben?
Es scheint, dass das invalidateLayout aus dem benutzerdefinierten UICollectionViewFlowLayout die sizeForItemAtIndexPath-Methode in der Auflistung nicht auslöst? Irgendwelche Ideen? Ich möchte wirklich nur die Größenänderung der Spalte über den sizeForItemAtIndexPath bei der Rotation erfolgen.
HINWEIS: Ich verwende hier kein Storyboard, sondern eine benutzerdefinierte Ansicht, in der ich eine collectionView eintrage und auf meine eigenen collectionView-Klassen referenziere.
Der folgende Code funktioniert gut, aber bei der Rotation wird die Anzahl der Spalten nicht auf 7 gehalten. Beim Ausführen des Codes zeigt die Konsolenausgabe zunächst:
%Vor%Aber wenn ich dann den Bildschirm rotiere, sehe ich Folgendes:
%Vor%Das Problem ist, dass "sizeForItemAtIndexPath" nie aufgerufen wurde ????
Ausgabecode für Rotation
Hinweis: "sizeForItemAtIndexPath" wird nicht ausgelöst, obwohl "invalidateLayout"
istViewController: viewWillLayoutSubviews GCCalendarLayout: shouldInvalidateLayoutForBoundsChange GCCalendarLayout: invalidateLayout
** Meine benutzerdefinierte Ansicht, die die Sammlung enthält Ansicht **
%Vor%Ansicht für benutzerdefinierte Sammlung
%Vor%** Benutzerdefinierte CollectionView-Zelle **
%Vor%Benutzerdefiniertes Layout
%Vor% Nichts half mir aus den vorhandenen Antworten (iPhone X Simulator iOS 11.2).
Ich habe festgestellt, dass die Änderung von estimatedSize
für mich bei diesem Problem hilfreich ist:
Tags und Links ios uicollectionview swift uicollectionviewlayout rotation