Vinci
Vinci is an asynchronous image downloader and cache for iOS.
Note: Vinci is early in development and, although stable, is missing some important features.
Roadmap
Done
- Asychronous image downloading (0.1.0).
- Download queue (0.1.0).
- Combined memory and disk cache (0.1.0).
- Image transformers (0.2.0).
- Support for caching images post-transformation (0.2.0).
Outstanding
- Automatic cache expiration.
UIImageView
binding.
Usage
You can use the shared Vinci
singleton and the request
factory method to fetch an image like so:
Vinci.shared.request(with: url) { (image, isCached) in
imageView.image = image
}
A Vinci
instance can also initialized with custom URLSession
and VinciCache
instances:
let session = URLSession.shared
let cache = VinciCache()
let vinci = Vinci(session: session, cache: cache)
Transformers
You can pass an optional array of Transformers
to modify the image before it's passed to the completion hander:
let transformers: [Transformer] = [
MonoTransformer(color: UIColor.gray, intensity: 1.0),
ScaleTransformer(size: imageView.frame.size)
]
Vinci.shared.request(with: url, transformers: transformers) { (image, isCached) in
imageView.image = image
}
Vinci includes a number of transformers by default:
ScaleTransformer
scales an image to a specific size.MonoTransformer
usesCIColorMonochrome
to color tint an image.ClosureTransformer
accepts a closure which applies a custom transformation.
Additional transformers can be created by implementing the Transformer
protocol.
Example
To run the example project, clone the repo, and run pod install
from the Example directory first.
Requirements
Installation
Vinci is available through CocoaPods. To install it, add the following line to your Podfile:
pod 'Vinci'
Author
Conor Mulligan, [email protected]
License
Vinci is available under the MIT license. See the LICENSE file for more info.