iOS SDWebImage fade-in UITableViewCell
Ich bin schon mit SDWebImage(ver3.0) auf meine iOS-app, und ich möchte zu verblassen in dem neuen Bild von uitableviewcell sobald es lädt wie Weg2.0, Pinterest, und Viddy.Dank iOS SDWebImage fade-in neues Bild, fade-in sich selbst ist, zu arbeiten.
Jedoch, Bild in Zelle wieder geladen tableview beim scrollen.
Dies kann verursacht werden durch eine Wiederverwendung von einer Zelle.
Hier ist mein code.
[cell.userImageView setImageWithURL:url
placeholderImage:placeholderImage
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
if (!error) {
cell.userImageView.alpha = 0.0;
[UIView transitionWithView:cell.userImageView
duration:1.0
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{
[cell.userImageView setImage:image];
cell.userImageView.alpha = 1.0;
} completion:NULL];
}
}];
- Finden Sie heraus, ob SDWebImage nicht Zwischenspeichern - wenn ja, stellen Sie sicher, dass Sie nur animieren, non-Cache lädt.
- Danke! Die Zwischenspeicherung erfolgt. Aber ich nicht überprüfen, ich habe nur animieren, non-Cache geladen wird...
- Mögliche Duplikate von iOS SDWebImage fade-in neues Bild
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kredit geht an @OzBoz für den Hinweis, dass die richtige Lösung ist, um zu bestätigen, ob das Bild wurde über das Netzwerk abgerufen (nicht im Cache) und wenn ja, führen Sie die animation:
Wenn Sie besorgt sind über die Zelle nicht mehr sichtbar ist), können Sie auch verwenden:
Diese Methode (nicht zu verwechseln mit der ähnlich benannten
UITableViewDataSource
- Methode) wird nicht zurück-nil
wenn die Zeile noch sichtbar ist. Dies ist sehr wichtig zu tun, in den meistenUITableViewCell
async-Bild-retrieval-Prozesse, aber es stellt sich heraus, dasssetImageWithURL
annulliert alle vorherigen Bild-retrieval-Verfahren, so ist es weniger kritisch überprüfen Sie dies bei der BenutzungSDImageWeb
.[cell.userImageView setImage:image];
ist auch überflüssig. Denn nach Bild heruntergeladen, SDWebImage gehandhabt Einstellung das Bild schon selbst.if (cacheType == SDImageCacheTypeNone) ...
. Ich aktualisiert meine Antwort entsprechend. Meine Vorherige Antwort übercellForRowAtIndexPath
ist nur entscheidend, wenn Sie sind asynchron abrufen eines Bildes und die Zelle anschließend gescrollt vor dem asynchronen Bild-retrieval erfolgt. Aber es stellt sich heraus, dassSDWebImage
, wenn man auf eine Zelle wiederverwendet, wird Abbrechen, die zuvor in der Warteschlange Netzwerk-Operationen, so ist dies mit einem geringen Risiko verbunden.