Ich verwende dies, um die URL in die Bildansicht zu laden
%Vor%Wenn jedoch 10 Elemente in der Tabellenansichtszelle mit verschiedenen Bildern vorhanden sind, wird das Scrollen langsamer und hängt
Ich lade Bilder mit der Größe 40 x 40
Ich frage mich, ob es eine bessere Möglichkeit gibt, URL-Bilder zu laden?
Ich würde vorschlagen, SDWebImage zu verwenden.
Nach der Installation müssen Sie einen Bridging-Header für Swift erstellen und diese Zeile einfügen:
%Vor%Dann müssen Sie in Ihrer cellForRowAtIndexPath-Funktion nur noch Folgendes tun:
%Vor%Das Schöne an dieser Bibliothek ist, dass sie das Bild automatisch zwischenspeichert, sodass es nur einmal heruntergeladen wird.
Sie müssen die Ansichten asynchron laden. Geben Sie zunächst ein Dummy oder ein leeres Bild ein. Laden Sie dann asynchron im Hintergrund alle Bilder für Zellen, die gerade angezeigt werden, in Ihr Modell. Wenn jedes Bild eintrifft, speichern Sie es im Modell und laden Sie die Tabellenansicht neu. So wird jedes Bild erscheinen, wenn es ankommt, aber Ihr Scrollen wird nicht verlangsamt, weil immer ist ein Bild - das leere oder Dummy, wenn Sie das Bild für diese Zeile nicht abgerufen haben, oder das echte Bild, wenn Sie es abgerufen haben.
Hier ist ein Beispielcode aus meinem Buch:
%Vor% (Das vollständige Beispiel ist hier Und der Code für MyDownloader, die Klasse von self.downloader
, ist hier .)
Um eine besonders hohe Effizienz zu erzielen, brechen Sie den Download ab, wenn der Benutzer vor dem Eintreffen des Bildes eine Zeile aus dem Bildbereich scrollt. Auf diese Weise können Sie festlegen, wie viele Downloads gleichzeitig ausgeführt werden können.
Apple hat einen Beispielcode LazyTableImages , obwohl er in Objective-C enthalten ist . Genau wie bei @ Matt erwähnt, muss es asynchron durchgeführt werden.