Image with AlamofireImage
//
// UIImageExt.swift
// FeedSample
//
// Created by JONAS on 15/01/2018.
// Copyright © 2018 Mynd. All rights reserved.
//
// Prerequisites:
// 1. import UIKit, AlamofireImage & KYCircularProgress
//
import UIKit
import AlamofireImage
import KYCircularProgress
extension UIImageView {
func ex_setImage(urlString: String) {
let status: KYCircularProgress = configureCircularProgress
let imgManager = ImageViewManager.instance
if let imgCached = imgManager.imageCache.image(withIdentifier: urlString) {
self.image = imgCached
status.isHidden = true
} else {
self.af_setImage(withURL: URL(string:urlString)!
, placeholderImage: nil
, filter: nil
, progress: { (progress) in
status.progress = progress.fractionCompleted
}, progressQueue: DispatchQueue.main
, imageTransition: UIImageView.ImageTransition.crossDissolve(0.5)
, runImageTransitionIfCached: true
, completion: { (response) in
guard let img = response.result.value else { return }
self.image = img
imgManager.imageCache.add(img, withIdentifier: urlString)
})
}
}
internal var configureCircularProgress: KYCircularProgress {
let cgreact = CGRect(x: 5.0, y: 5.0, width: 40.0, height: 40.0)
let statusProgress = KYCircularProgress(frame: cgreact)
statusProgress.isHidden = false
statusProgress.colors = [UIColor(rgba: 0xA6E39D11), UIColor(rgba: 0xAEC1E355), UIColor(rgba: 0xAEC1E3AA), UIColor(rgba: 0xF3C0ABFF)]
statusProgress.guideLineWidth = 1.0
statusProgress.showGuide = true
statusProgress.lineCap = kCALineCapRound
statusProgress.progress = 0.001
statusProgress.progressChanged { (progress, circularProgress) in
print("^^^^^ progress: \(progress)")
circularProgress.isHidden = progress == 1.0
}
self.addSubview(statusProgress)
return statusProgress
}
}
class ImageViewManager {
public static var instance = ImageViewManager()
public let imageCache = AutoPurgingImageCache(
memoryCapacity: UInt64(100).megabytes(),
preferredMemoryUsageAfterPurge: UInt64(60).megabytes()
)
}