2017-08-17 83 views

回答

1

这是我下载图像功能,你只需要下载网址:

let imageCache = NSCache<AnyObject, AnyObject>() 

func downloadImageFromURL(string: String) -> UIImage { 

    if let cachedImage = imageCache.object(forKey: string as AnyObject) as? UIImage { 

     return cachedImage 

    } else { 

     let data = NSData(contentsOf: URL(string: string)!) 
     return UIImage(data: data! as Data)! 

    } 

} 

您只需拨打:let image = downloadImageFromURL("yourURL")

编辑

这是直接下载图片到版我以前用过的imageView;这是一个不同的方法,也许它会加载速度更快:

let imageCache = NSCache<AnyObject, AnyObject>() 

extension UIImageView { 


func downloadImage(from imgURL: String!) { 

    self.image = nil 

    // Check if there's an image in the cache 

    if let cachedImage = imageCache.object(forKey: imgURL as AnyObject) as? UIImage { 
     self.image = cachedImage 
     return 
    } 

    // Otherwise, download image from Firebase via URL-string 

    let url = URLRequest(url: URL(string: imgURL)!) 

    let task = URLSession.shared.dataTask(with: url) { 
     (data, response, error) in 

     if error != nil { 
      print(error!) 
      return 
     } 

     DispatchQueue.main.async { 
      if let image = UIImage(data: data!) { 
       imageCache.setObject(image, forKey: imgURL as AnyObject) 
      } 
      self.image = UIImage(data: data!) 
     } 

    } 

    task.resume() 
} 
} 
+0

谢谢,但它确实需要花费大量的时间来下载,是不是有什么更快的方式? –

+1

这取决于您的互联网连接;)不,这是推荐的下载数据的方式。但是,如果有人连接不好,您可以做什么,以及我所做的是上传压缩版本的图像。上传时,只需说:let data = UIImageJPEGRepresentation(yourImage,0.7);上传压缩版本的图像,并认真地说,没有太大的区别。 –

+0

好的,谢谢你的回答! –

相关问题