Schnellere Möglichkeit, ein Bild von einer URL in die Bildansicht in der Tabellenansichtszelle zu laden

8

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?

    
Utku Dalmaz 06.03.2015, 18:50
quelle

5 Antworten

21

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.

    
Sam 06.03.2015, 19:28
quelle
5

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.

    
matt 06.03.2015 18:57
quelle
4

Ich habe bereits auf die ähnliche Frage hier geantwortet

Verwenden Sie die folgende Klasse:

%Vor%

Verwendung:

%Vor%     
Kalpesh 08.07.2015 07:57
quelle
0

Apple hat einen Beispielcode LazyTableImages , obwohl er in Objective-C enthalten ist . Genau wie bei @ Matt erwähnt, muss es asynchron durchgeführt werden.

    
Dino Tw 06.03.2015 19:11
quelle
0
%Vor%

Es funktioniert gut mit AFNetworking 2.

    
Will 06.03.2015 19:21
quelle

Tags und Links