ImageFetcher is lightweight image loading library. It is optimizes for scroll view performance by decompressing images in the background and exposing a configuration option for rounding corners of the image.
Swift 5.5 toolchain with Swift Package Manager, iOS 13
Add ImageFetcher to your Packages.swift file:
.package(url: "https://github.com/Mobelux/ImageFetcher.git", from: "2.0.0"),Then, add the product to any targets that need access to the library:
.product(name: "ImageFetcher", package: "ImageFetcher")Intialize ImageFetcher with a Cache:
let fetcher = ImageFetcher(try DiskCache(storageType: .temporary(nil)))Optionally initialize with a session configuration and maximum concurrent image processing operation count:
let sessionConfiguration = URLSessionConfiguration.default
sessionConfiguration.timeoutIntervalForResource = 20
let fetcher = ImageFetcher(try DiskCache(storageType: .temporary(nil)),
sessionConfiguration: sessionConfiguration,
maxConcurrent: 5)To fetch an image from the web:
let config = ImageConfiguration(url: URL(string: "https://via.placeholder.com/150")!)
let image = try await fetcher.load(config).valueFetch an image with configuration options and robust handling:
let config = ImageConfiguration(url: URL(string: "https://via.placeholder.com/150")!,
size: CGSize(width: 100.0, height: 100.0),
constrain: true,
cornerRadius: 10.0,
scale: 1)
do {
let imageSource = try await fetcher.load(config)
switch imageSource {
case .cached(let image):
/// handle image coming from cache
case .downloaded(let image):
/// handle newly downloaded image
}
} catch {
/// handle error
}ImageFetcher is release under MIT licensing.