0
votes

Comment montrer l'image de l'URL dans iOS Swift

J'essaie de charger l'image de l'URL dans mon application iOS Swift. J'ai écrit le code suivant.

 let imageURL =  minHost + "\(userData["profileImage"])"
 let url = URL(string: imageURL)!
 let imageData = try? Data(contentsOf: url)
 profileImage.image = UIImage(data: imageData!)


0 commentaires

5 Réponses :


0
votes

Vous pouvez essayer comme ceci:

        let url = URL(string: "image url here")
        if url != nil {
            DispatchQueue.global().async { [weak self] in
                if let data = try? Data(contentsOf: url!) {
                    if let image = UIImage(data: data) {
                        DispatchQueue.main.async {

                            self.profileImage.image = image

                        }
                    }
                }
            }
        }


0 commentaires

0
votes

Essayez ceci xxx


0 commentaires

0
votes

Ne faites jamais la tâche de téléchargement sur le fil principal. Si vous le faites, vous ne pouvez pas accéder correctement aux composants des écrans visibles actuels. Il devrait être toujours sur le fil d'arrière-plan. XXX


1 commentaires

ne faites jamais le téléchargement avec (contenu de :) pas même sur un fil d'arrière-plan



1
votes

Essayez ceci sur le terrain de jeu. Le chargement de l'image de l'URL prend un certain temps et doit être exécuté sur un autre fil différent du fil principal.

import UIKit

let url = URL(string: "https://cdn.arstechnica.net/wp-content/uploads/2018/06/macOS-Mojave-Dynamic-Wallpaper-transition.jpg")!
var image = UIImage()

DispatchQueue.global().async {
    if let data = try? Data(contentsOf: url) {
        DispatchQueue.main.async {
            image = UIImage(data: data)!
        }
    }
}

image


3 commentaires

yo-yo. Ça marche! J'ai testé :))


S'il vous plaît, marquez la réponse comme répondu si elle a aidé!)


Vous êtes fortement découragé de charger des données à partir d'une URL distante avec des données synchrones (contenu de API, même sur un fil d'arrière-plan.



2
votes

au lieu d'aller chercher une image à l'aide de données (contenu de :) code> méthode, utilisez urlsession code> pour effectuer des appels réseau.

let imageURL =  minHost + "\(userData["profileImage"])"

if let url = URL(string: imageURL) {
    URLSession.shared.dataTask(with: url) {[weak self] (data, urlResponse, error) in
        if let data = data {
            DispatchQueue.main.async {
                self?.profileImage.image = UIImage(data: imageData)
            }
        }
    }.resume()
}


0 commentaires