あなたがイメージ
extension UIImageView {
func downloadImage(from url : String, completion: ((_ errorMessage: String?) -> Void)?){
let urlRequest = URLRequest(url: URL(string: url)!)
let task = URLSession.shared.dataTask(with: urlRequest){ (data,response,error) in
if error != nil {
completion?("error...")
}
DispatchQueue.main.async {
self.image = UIImage(data:data!)
completion?(nil)
}
}
task.resume()
}
}
をダウンロードした後、あなたのViewControllerで実行されます、あなたの方法でクロージャを渡すことができ、次のアプローチ
extension UIImageView {
func downloadImage(from url : String){
self.activityIndicator.startAnimating()
let urlRequest = URLRequest(url: URL(string: url)!)
let task = URLSession.shared.dataTask(with: urlRequest){(data,response,error)in
if error != nil {
DispatchQueue.main.async {
self.activityIndicator.stopAnimating()
}
print("error...")
}
else {
DispatchQueue.main.async {
self.activityIndicator.stopAnimating()
self.image = UIImage(data:data!)
}
}
}
task.resume()
}
fileprivate var activityIndicator: UIActivityIndicatorView {
get {
let activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: .white)
activityIndicator.hidesWhenStopped = true
activityIndicator.center = CGPoint(x:self.frame.width/2,
y: self.frame.height/2)
activityIndicator.stopAnimating()
self.addSubview(activityIndicator)
return activityIndicator
}
}
}
イメージをダウンロードするには、sd_webimagesライブラリが最適です。それはインジケータもサポートします。ありがとうございます。 – Vahid
それは完全に動作しています! :D – SwiftyIso
私の写真が無ければ、自分のイメージを見せたい。 どうすればsd_webimagesでこれを行うことができますか? – SwiftyIso