TestsTested | ✗ |
LangLanguage | SwiftSwift |
License | Apache 2 |
ReleasedLast Release | May 2015 |
SPMSupports SPM | ✗ |
Maintained by Dalton Cherry.
Skeets is a networking image library that fetches, caches, and displays images via HTTP in Swift. It is built off SwiftHTTP.
Full article here: Vluxe
First thing is to import the framework. See the Installation instructions, on how to add the framework to your project.
import Skeets
Once imported, you can start requesting images.
//create a imageView
let imageView = UIImageView(frame: CGRectMake(0, 60, 200, 200))
self.view.addSubview(imageView)
//set the cache directory. Only have to do this once since `sharedManager` is a singleton
let paths = NSSearchPathForDirectoriesInDomains(.CachesDirectory, .UserDomainMask, true)
ImageManager.sharedManager.cache.diskDirectory = "\(paths[0])/ImageCache"
//for OSX
//let paths = NSSearchPathForDirectoriesInDomains(.CachesDirectory, .UserDomainMask, true)
//ImageManager.sharedManager.cache.diskDirectory = "\(paths[0])/\(NSBundle.mainBundle().bundleIdentifier!)/ImageCache"
ImageManager.sharedManager.cache.cleanDisk()
//fetch the image
ImageManager.fetch("http://vluxe.io/assets/images/logo.png",
progress: { (status: Double) in
println("updating some UI for this: \(status)") //useful if you have some kind of progress dialog as the image loads
},success: { (data: NSData) in
println("got an image!")
imageView.image = UIImage(data: data) //set the image data
}, failure: { (error: NSError) in
println("failed to get an image: \(error)")
})
Fetch requests can be cancelled when needed. This simply causes the closures not to be called.
ImageManager.cancel("http://vluxe.io/assets/images/logo.png")
Skeets also supports customized caching and protocols. It is possible to implement your own custom cache by implementing the CacheProtocol
. There is also a powerful default cache provided with a few customization options.
let c = ImageManager.sharedManager.cache as? ImageCache
if let cache = c {
cache.diskAge = 60 * 60 //360 seconds or 1 hour (Default is 1 day).
cache.imageCount = 10 //only 10 images will be stored in memory (Default is 50).
}
The cache can also be manually purged (e.g. memory warning is received).
ImageManager.sharedManager.cache.clearCache()
The disk can also be clean for possibly stale entries as well.
ImageManager.sharedManager.cache.cleanDisk()
Skeets requires at least iOS 8/OSX 10.10 or above.
Skeets depends on SwiftHTTP. Make sure to import that framework as well before using Skeets.
If you encounter an issue with Skeets not building becuase SwiftHTTP can not be found, make sure to manually select SwiftHTTP framework from the build dropdown and build it. Then build your app again. This will cause the issue of SwiftHTTP not being found to be resolved.
First see the installation docs for how to install Rogue.
To install Skeets run the command below in the directory you created the rogue file.
rogue add https://github.com/daltoniam/SwiftHTTP
rogue add https://github.com/daltoniam/Skeets
Next open the libs
folder and add the Skeets.xcodeproj
to your Xcode project. Once that is complete, in your "Build Phases" add the Skeets.framework
to your "Link Binary with Libraries" phase. Make sure to add the libs
folder to your .gitignore
file.
Simply grab the framework (either via git submodule or another package manager).
Add the Skeets.xcodeproj
to your Xcode project. Once that is complete, in your "Build Phases" add the Skeets.framework
to your "Link Binary with Libraries" phase.
If you are running this in an OSX app or on a physical iOS device you will need to make sure you add the Skeets.framework
or SkeetsOSX.framework
to be included in your app bundle. To do this, in Xcode, navigate to the target configuration window by clicking on the blue project icon, and selecting the application target under the "Targets" heading in the sidebar. In the tab bar at the top of that window, open the "Build Phases" panel. Expand the "Link Binary with Libraries" group, and add Skeets.framework
or SkeetsOSX.framework
depending on if you are building an iOS or OSX app. Click on the + button at the top left of the panel and select "New Copy Files Phase". Rename this new phase to "Copy Frameworks", set the "Destination" to "Frameworks", and add Skeets.framework
or SkeetsOSX.framework
respectively.
Skeets is licensed under the Apache v2 License.