Swift 3: Display Image from URL

后端 未结 9 1855
Happy的楠姐
Happy的楠姐 2020-12-04 22:27

In Swift 3, I am trying to capture an image from the internet, and have these lines of code:

var catPictureURL = NSURL(fileURLWithPath: \"http://i.imgur.com/         


        
相关标签:
9条回答
  • 2020-12-04 22:49

    Swift

    Good solution to extend native functionality by extensions

    import UIKit
        
    extension UIImage {
      convenience init?(url: URL?) {
        guard let url = url else { return nil }
                
        do {
          self.init(data: try Data(contentsOf: url))
        } catch {
          print("Cannot load image from url: \(url) with error: \(error)")
          return nil
        }
      }
    }
    

    Usage

    Convenience initializer is failable and accepts optional URL – approach is safe.

    imageView.image = UIImage(url: URL(string: "some_url.png"))
    
    0 讨论(0)
  • 2020-12-04 22:49

    Use extension for UIImageView to Load URL Images.

    let imageCache = NSCache<NSString, UIImage>()
    
    extension UIImageView {
    
        func imageURLLoad(url: URL) {
    
            DispatchQueue.global().async { [weak self] in
                func setImage(image:UIImage?) {
                    DispatchQueue.main.async {
                        self?.image = image
                    }
                }
                let urlToString = url.absoluteString as NSString
                if let cachedImage = imageCache.object(forKey: urlToString) {
                    setImage(image: cachedImage)
                } else if let data = try? Data(contentsOf: url), let image = UIImage(data: data) {
                    DispatchQueue.main.async {
                        imageCache.setObject(image, forKey: urlToString)
                        setImage(image: image)
                    }
                }else {
                    setImage(image: nil)
                }
            }
        }
    }
    
    0 讨论(0)
  • 2020-12-04 22:53

    The easiest way according to me will be using SDWebImage

    Add this to your pod file

      pod 'SDWebImage', '~> 4.0'
    

    Run pod install

    Now import SDWebImage

          import SDWebImage
    

    Now for setting image from url

        imageView.sd_setImage(with: URL(string: "http://www.domain/path/to/image.jpg"), placeholderImage: UIImage(named: "placeholder.png"))
    

    It will show placeholder image but when image is downloaded it will show the image from url .Your app will never crash

    This are the main feature of SDWebImage

    Categories for UIImageView, UIButton, MKAnnotationView adding web image and cache management

    An asynchronous image downloader

    An asynchronous memory + disk image caching with automatic cache expiration handling

    A background image decompression

    A guarantee that the same URL won't be downloaded several times

    A guarantee that bogus URLs won't be retried again and again

    A guarantee that main thread will never be blocked Performances!

    Use GCD and ARC

    To know more https://github.com/rs/SDWebImage

    0 讨论(0)
提交回复
热议问题