Swift async chargement de l'image
Je suis en train de travailler sur afficher l'image à partir de l'url asynchrone. J'ai essayé de créer un nouveau thread pour télécharger l'image, puis actualiser sur main thread
.
func asyncLoadImg(product:Product,imageView:UIImageView){
let downloadQueue = dispatch_queue_create("com.myApp.processdownload", nil)
dispatch_async(downloadQueue){
let data = NSData(contentsOfURL: NSURL(string: product.productImage)!)
var image:UIImage?
if data != nil{
image = UIImage(data: data!)
}
dispatch_async(dispatch_get_main_queue()){
imageView.image = image
}
}
}
Quand j'ai essayé de debug qui, quand il s'agit de dispatch_async(downloadQueue), il saute sur la touche func. Toute suggestion? Thx
- stackoverflow.com/a/27712427/2303865
- 🙁 pas de travail, même erreur. Les opérations dans le dos thread jamais exécutée
- Pouvez-vous expliquer plus précisément? Je ne comprends pas
- Ajouter que UIImageView extension de votre projet et il suffit de charger votre image à l'aide de
yourImageView.downloadedFrom(yourImageLink, ... )
- mettre le débogage de point à l'intérieur du bloc, step-in bouton habitude d'aller dans le bloc.
- veuillez adresser réponse exacte comme réponse correcte , de sorte que cela profite à d'autres pour résoudre le problème , qui obtient le maximum de upvote
Vous devez vous connecter pour publier un commentaire.
Swift 3.0+ mise à jour de Code 🙁 a pris l'aide de jamesrochabrun Lien https://github.com/jamesrochabrun/JSONTutorialFinal )
Swift 3 Mis À Jour Le Code :
Swift 2.2 Code :
Maintenant où vous le besoin juste de le faire pour charger une image à partir de l'url du serveur :
L'utilisation de swift 3.0 + mise à jour du code à l'aide de l'espace réservé d'image :
UIImageView.imageFromServerURL(URLString:"ici l'url du serveur",espace réservé: image d'espace réservé dans uiimage format)
Swfit 3 ou moins :
UIImageView.imageFromServerURL("voici l'url du serveur")
Simple !
Utilisation
extension
dansSwift3
. Pour résoudre problème de Réseau je vous recommande d'utiliserNSCache
:Espère que ça aide!
NSString
,AnyObject
, au lieuString
,Any
?Portant sur de Shobhakar Tiwari réponse, je pense que c'est souvent utile dans ce cas pour avoir une image par défaut en cas d'erreur, et pour le chargement des fins, donc je l'ai mis à jour pour inclure une option par défaut de l'image:
Swift 3
Ici, ce code peut vous aider.
Avec cette image va télécharger et cache sans retard de l'affichage de la table de défilement
Cette solution faire le défilement très rapide, sans inutiles mises à jour d'image.
Vous devez ajouter la propriété url de notre classe de cellules:
Et ajouter l'extension:
Vous pouvez également l'améliorer et d'en extraire un peu de code pour un plus générale de la cellule de la classe c'est à dire CustomCellWithImage pour le rendre plus réutilisable.
La façon la plus commune
in SWIFT 4
chargement asynchrone des images sansblink
ouchanging images
effet est l'utilisation de l'personnaliséUIImageView
classe comme ceci:exemple de l'utilisation de cette classe dans
UITableViewCell
ci-dessous:L'un de la meilleure façon est d'utiliser des SDWebImage.
Swift Exemple:
Objective-C Exemple: