Ich habe eine Sammlungsansicht mit einem benutzerdefinierten Ablauflayout und vielen verschiedenen Zellen unterschiedlicher Höhe. Die Breite der Sammlungsansicht ändert sich bei der Gerätedrehung, daher muss sich die Zellenbreite entsprechend ändern. Damit dies funktioniert, habe ich die "sizeForItemAtIndex" -Methode implementiert und abhängig von der aktuellen Schnittstellenausrichtung unterschiedliche Größen zurückgegeben. Die meisten Zellen ändern ihre Höhe nicht, jedoch gibt es eine Zelle, die ich erweitern und reduzieren möchte, wenn der Benutzer darauf klickt. Sie können davon ausgehen, dass die Zelle nur ein UILabel mit einer oder mehreren Textzeilen hat. Wenn die Zelle zum ersten Mal angezeigt wird, wird die Anzahl der Zeilen auf 1 gesetzt, und wenn ein Benutzer auf die Zelle tippt, wird die Anzahl der Zeilen auf 0 gesetzt, und hier sollte die Zelle die innere Größe der Beschriftung verwenden, um ihre Höhe automatisch zu ändern . Wie kann ich diesen Effekt erzielen? Hier ist ein Beispiel dafür, wie es aussehen sollte:
Befolgen Sie diese Schritte:
1). Erstellen Sie eine boolesche Variable mit dem Namen isExpanded
zum Verwalten von expand / collapse
2.) Fügen Sie der Schaltfläche show more
ein Ziel und eine Aktion hinzu %Vor%3.) Fügen Sie in sizeForItemAtIndexPath zur Verwaltung der Höhe Folgendes hinzu:
%Vor%4.) Dann in der ShowMoreButtonClicked-Methode
%Vor%5.) Fügen Sie diese Zeile in Ihrem cellForItemAtIndexPath
hinzu %Vor%6.) Build & amp; Führen Sie
ausDie vorherige Antwort ist gut, aber wenn Sie eine Animation wünschen, müssen Sie diese drei Schritte ausführen:
1. Validieren Sie Ihr collectionViewLayout
%Vor%2.Wählen Sie den gewünschten indexPath oder alle Daten in einem performBatchUpdates-Block
%Vor% 3. Geben Sie die neue Höhe zurück, die in sizeForItemAtIndexpath
delegate method
Tags und Links ios uicollectionview autolayout