Warum löst invalidateLayout in UICollectionView keinen sizeForItemAtIndexPath aus? (Code beigefügt)

8

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"

ist
  

ViewController: 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%     
Greg 14.10.2015, 10:35
quelle

4 Antworten

8

EDIT: Versuchen Sie dies in Ihrem ViewController:

%Vor%     
Kujey 19.10.2015, 10:10
quelle
1

Wenn Sie Storyboard verwenden Setzen Sie die CollectionviewFlowLayout-Klasse In das Storyboard habe ich Bellow

eingefügt

    
Ramkumar chintala 14.10.2015 11:17
quelle
0

@ Kujey's Lösung kann auf UIView angewendet werden, ohne auf UIViewController zuzugreifen:

%Vor%     
k06a 06.02.2017 15:30
quelle
0

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:

> %Vor%     
Andrew Romanov 24.11.2017 10:19
quelle