UITableViewController: Wenn Sie mit der dynamischen Zeilenhöhe nach unten scrollen, wird die Animation an der falschen Position gestartet

8

Ich habe eine Tabellenansicht, die richtig konfiguriert ist, um dynamische Zeilenhöhen basierend auf dem Ray Wenderlich-Handbuch zu haben. hier :

Ich habe die Einschränkungen so eingerichtet, dass eine klare Linie von Beschränkungen von oben nach unten in der Zelle vorhanden ist. Ich habe auch inhaltliche und inhaltliche Komprimierungsresistenzprioritäten und geschätzte Zeilenhöhe eingerichtet.

Dies ist der Code, den ich zum Einrichten der Tabellenansicht verwende:

%Vor%

Und so füge ich neue Zeilen hinzu:

%Vor%

Das Setup mit den Standardzeilen ist in Ordnung. Es fügt die Zeilen und Scrolls wie erwartet nach unten hinzu.

Aber wenn ich danach neue Zeilen hinzufüge, scheint das Scrollen über der letzten Zelle zu beginnen. Wenn ich mehr Zellen hinzufüge, scheint der Offset zu steigen.

Hier ist ein gif, das es zeigt: Imgur

Es hängt sicherlich mit der Bildlaufanimation zusammen (nicht mit der insertRow-Animation), weil es bei ausgeschalteter Animation richtig scrollt.

Das Ändern von estimatedRowHeight macht beim Scroll-Offset einen Unterschied, aber ich konnte keinen Wert finden, der es behoben hat.

Ich habe auch versucht, den Bildlauf mit dispatch_async zu verzögern, aber es hat nichts geändert.

Habt ihr irgendwelche Ideen?

    
Marcio Cruz 07.02.2016, 02:05
quelle

1 Antwort

13

Wow, das war eine lustige Herausforderung. Vielen Dank für die Veröffentlichung des Testprojekts.

Es scheint also so, dass nach dem Hinzufügen der neuen Zeile etwas daran fehlt, wo die Tabellenansicht denkt, dass sie gescrollt wurde. Scheint mir ein Fehler in UIKit zu sein. Um das zu umgehen, habe ich Code hinzugefügt, um die Tabellenansicht vor dem Anwenden der Animation zu 'zurücksetzen'.

Hier ist, womit ich endete:

%Vor%

Ich konnte es nicht mit insertRowsAtIndexPaths(_:withRowAnimation:) arbeiten lassen, aber reloadData() hat gut funktioniert. Dann brauchen Sie die gleiche Verzögerung erneut, bevor Sie auf die neue letzte Zeile animieren.

    
Dave Batton 07.02.2016, 18:39
quelle

Tags und Links