iOS: load an image from url

前端 未结 9 1347
生来不讨喜
生来不讨喜 2020-12-02 14:06

I need to load an image from a url and set it inside an UIImageView; the problem is that I don\'t know the exact size of the image, then how can I show the image correctly?<

相关标签:
9条回答
  • 2020-12-02 14:53

    In swift:

    var url = NSURL.URLWithString("http://www.example.com/picture.png")
    var data = NSData(contentsOfURL : url)
    var image = UIImage(data : data)
    image.size // if you need it
    
    0 讨论(0)
  • 2020-12-02 14:56

    SWIFT 5.0 + fetch on background

    private func fetchImage(_ photoURL: URL?) {
    
        guard let imageURL = photoURL else { return  }
    
        DispatchQueue.global(qos: .userInitiated).async {
            do{
                let imageData: Data = try Data(contentsOf: imageURL)
    
                DispatchQueue.main.async {
                    let image = UIImage(data: imageData)
                    self.userImageView.image = image
                    self.userImageView.sizeToFit()
                    self.tableView.reloadData()
                }
            }catch{
                print("Unable to load data: \(error)")
            }
        }
    }
    
    0 讨论(0)
  • 2020-12-02 14:57

    If you prefer you can even move it to an UIImage extension:

    extension UIImage {
        
        //NOTE: This is not thread safe, please run it on a background thread.
        convenience init?(fromFile filePath:String) {
            guard let url = URL(string: filePath) else {
                return nil
            }
            
            self.init(fromURL: url)
        }
        
        //NOTE: This is not thread safe, please run it on a background thread.
        convenience init?(fromURL url:URL) {
            let imageData: Data
            
            do {
                imageData = try Data(contentsOf: url)
            } catch {
                return nil
            }
            
            self.init(data: imageData)
        }
        
    }
    
    0 讨论(0)
提交回复
热议问题