1234567891011121314151617181920212223242526272829303132333435363738394041 |
- //
- // CachedImageView.swift
- // LiveLikeGiphyChallenge
- //
- // Created by Arbnor Tefiki on 6.2.22.
- //
- import UIKit
- var cachedImages = NSCache<NSString, UIImage>()
- class CachedImageView: UIImageView {
- private var currentURL: NSString?
- func loadAsyncImage(url: String, placeholder: UIImage?) {
- let imageURL = url as NSString
- if let cachedImage = cachedImages.object(forKey: imageURL) {
- image = cachedImage
- return
- }
- image = placeholder
- currentURL = imageURL
- guard let requestURL = URL(string: url) else { image = placeholder; return }
- URLSession.shared.dataTask(with: requestURL) { (data, response, error) in
- DispatchQueue.main.async { [weak self] in
- guard let imageData = data, error == nil else {
- self?.image = placeholder
- return
- }
- if self?.currentURL == imageURL {
- if let imageToShow = UIImage.gifImageWithData(imageData) {
- cachedImages.setObject(imageToShow, forKey: imageURL)
- self?.image = imageToShow
- } else {
- self?.image = placeholder
- }
- }
- }
- }.resume()
- }
- }
|