UICollectionView infinite scroll: Verwendet Indexpfade und löscht Inhalte

8

Mit der Antwort aus einer vorherigen Frage machte ich eine unendliche Bildlaufleiste. Ich habe jedoch ein Problem beim Scrollen.

Es scheint, dass für eine Millisekunde die UICollectionView (oder vielleicht auch UIScrollView ) denkt, dass die gezeigten Zellen nicht mehr sichtbar sind und die Zellen für neue Zellen wiederverwendet werden. Dies führt dazu, dass Zellen beim Scrollen doppelt verwendet werden. Der Grund, warum ich glaube, dass dies die Ursache meines Problems ist, liegt darin, dass der "Cheat", den man benutzt, um unendliches Scrollen zu können, das contentOffset des UIScollView ist.

Die Zellen meiner UICollectionView enthalten ein Hintergrundbild, das asynchron (aus dem Cache geholt) mit MKNetworkKit heruntergeladen wird. Eine der anderen Nebenwirkungen ist, dass beim Scrollen einer Ansicht "Bildschirmlängen" hintereinander der Bildschirm abgeschnitten wird. Fast so, als ob ein reloadData in UIScrollView aufgetreten wäre, aber der Code lädt die Daten überhaupt nicht neu.

Meine Frage ist: Wie kann ich verhindern, dass UICollectionView sichtbare Zellen wieder verwendet und die Ansicht plötzlich abschneidet?

    
Paul Peelen 09.04.2013, 19:48
quelle

2 Antworten

1

Lassen Sie 2 Kennungen erneut verwenden. Wenn Sie den contentOffset -Togger zwischen ihnen zurücksetzen.

    
Wain 13.04.2013 10:39
quelle
0

Es sieht so aus, als würde ich sichtbare Zellen wiederverwenden, wenn ich das Gerät rotiere. Ich war Bildschirm mit Bildern aus der Web-Bildsuche gefüllt und verwendet feste Bemaßung, um UICollectionView-Grenzen für Hoch- und Querformat genau zu füllen. Aber Stretching Bilder Fehlgröße Ich habe ein wenig gesetzt, und ich sah wiederverwendet oder einige mehr Zellen beim Rotieren (auch Reload Daten). Ich löse es mit der Berechnung der aktuellen Bildgröße kurz vor dem Neuladen (bei collectionView: numberOfItemsInSection :) von der Anzahl der gewünschten Bilder. Eine genaue Bildanpassung verhindert, dass ich extra belastet und wiederverwendet werden kann.

    
Rubanov Pavel 18.04.2013 09:05
quelle