UICollectionViewCell erweitern / reduzieren mit der inneren Größe

8

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:

    
almas 21.07.2015, 00:23
quelle

2 Antworten

11

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

aus     
Mihawk 23.07.2015, 11:35
quelle
1

Die 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

berechnet wurde     
MarMass 20.02.2017 15:47
quelle