Beim Laden von Images aus Firebase und anschließendes Auffüllen in die Zellen scheint eine abgehackte Performance zu bestehen. Ich denke, es könnte sein, weil die Bilder nicht zwischengespeichert werden.CollectionsKeine abgehackte Leistung anzeigen, wenn Bilder von einer URL aus Firebase geladen werden
Dies wird in der Funktion befindet URL aus den zurückSuchErgebnisse zu sammeln unmittelbar nach viewDidLoad()
let databaseRef = FIRDatabase.database().reference()
databaseRef.child("palettes").queryOrdered(byChild: "top").queryEqual(toValue: "#000000").observeSingleEvent(of: .value, with: { (snapshot) in
if let snapDict = snapshot.value as? [String:AnyObject]{
for each in snapDict as [String:AnyObject]{
let URL = each.value["URL"] as! String
self.URLArray.append(URL)
print(self.URLArray)
}
}
})
Und hier ist die Funktion, die Zellen zu füllen:
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)
let textLabel = cell.viewWithTag(2)
let ootdImage = cell.viewWithTag(4) as! UIImageView
if let url = NSURL(string: self.URLArray[indexPath.row]) {
if let data = NSData(contentsOf: url as URL){
ootdImage.image = UIImage(data: data as Data)
}
}
// display images from the dataArray.
textLabel?.backgroundColor = averageColor
return cell
Keine Sorge Über collectionsView.reloadData()
, habe ich es derzeit so eingestellt, dass ich manuell auf eine Schaltfläche tippen muss, um Daten neu zu laden, aber ich verstehe immer noch nicht, warum es eine Verzögerung im Scrollen gibt, besonders da alle Daten bereits gesammelt wurden.
Danke, dass es funktioniert, ich habe es so eingestellt, dass die Handhabung des Herunterladens und Konvertierens von Daten zu UIImage auf einer separaten Funktion erfolgt. Aber es gibt immer noch eine Verzögerung beim Herunterladen und Anzeigen von Bildern. –