2016-07-22 20 views
1

Ich habe zur Zeit eine App, die einen primären Fokus auf mehrere Seiten hat, die von Benutzer eingereicht Bilder in Sammlungen Ansichten gefüllt.Wie wird mit geladenen Bildern verfahren? Swift

ich Bilder in einen Cache speichere, so dass es kein Problem, nach der anfänglichen Last ist, aber das erste Mal, wenn die Seite zeigt, habe ich ein paar Probleme bekommt:

1) Es wäre wesentlich besser aussehen zu lassen Die Bilder werden nur angezeigt, wenn sie ALLE heruntergeladen haben, anstatt dass sie zufällig angezeigt werden, bis sie alle geladen sind. Ich lade meine Bilder von Firebase Storage herunter. Gibt es eine Möglichkeit, das zu tun?

2) Ich habe Etiketten, die für Firebase-Daten auf meinen Zellen repräsentativ sind, aber es sieht offensichtlich albern aus, dass diese Nummern/Labels angezeigt werden, bevor das Bild geladen wird. Wie würde das gehandhabt?

3) Wenn der aktuelle Benutzer ein Bild in eine Zelle sendet, sieht es albern aus, dass das Bild darauf wartet, zum Firebase-Speicher und zurück gesendet zu werden. Ich habe das Bild der Zelle sofort auf das ausgewählte Bild gesetzt. Aber dann, wenn das Bild geladen ist, verschwindet das Bild und lädt dann das Bild hoch.

Ich nehme an, das liegt daran, dass in meinem Bild-Cache ich haben müssen:

func loadImageUsingNSCache(urlString: String){ 

    self.image = nil 

am Anfang. Es wird also zu Beginn der Ladung auf Null gesetzt, und DANN wird das Bild gesendet.

Ich habe versucht, die self.image = nil nur in meine ZelleForRow, aber ich hatte immer noch massive Probleme mit Bildern blinken/an der falschen Stelle, bis ich es hier.

Jede Anleitung zu diesen würde sehr geschätzt werden. Ich weiß nicht, ob das getrennte Fragen sein müssen, aber sie scheinen eng miteinander verbunden zu sein, um gruppiert zu werden.

Antwort

1

Für 1 und 2 könnten Sie eine Versandgruppe erstellen, alle Downloads zu dieser Gruppe hinzufügen und benachrichtigt werden, wenn sie fertig sind. Auf diese Weise könnten Sie etwas von einem Ladebildschirm implementieren und dann alle Daten gleichzeitig darstellen.
Wie 3, ich weiß nicht, wie Ihr Cache implementiert ist, aber ich bin ziemlich sicher, dass jede anständige Caching-Engine die hochgeladenen und heruntergeladenen Bilder als verschiedene behandeln würde (obwohl es technisch das gleiche Bild ist).
Eine schmutzige Art, es zum Laufen zu bringen, wäre, das Bild beim Hochladen so zu platzieren, wie Sie es bereits tun, und es dann im Hintergrund herunterzuladen und das Bild ohne Animation zu aktualisieren. Der Benutzer merkt es nicht und Ihr Cache wird aktualisiert.

Verwandte Themen