Vinci 0.2.3

Vinci 0.2.3

Maintained by Conor Mulligan.

Vinci 0.2.3


CI Status Version License Platform

Vinci is an asynchronous image downloader and cache for iOS.

Note: Vinci is early in development and, although stable, is missing some important features.



  • 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).


  • Automatic cache expiration.
  • UIImageView binding.


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)


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 uses CIColorMonochrome to color tint an image.
  • ClosureTransformer accepts a closure which applies a custom transformation.

Additional transformers can be created by implementing the Transformer protocol.


To run the example project, clone the repo, and run pod install from the Example directory first.



Vinci is available through CocoaPods. To install it, add the following line to your Podfile:

pod 'Vinci'


Conor Mulligan, [email protected]


Vinci is available under the MIT license. See the LICENSE file for more info.