🚀 DFImageManager 1.0.0 is the first major release. It makes DFImageManager more robust and future proof.
The main difference is the absence of conditional compilation that relied on
__has_includemacros. Conditional compilation now only takes place when default image manager is created and doesn't rely on
__ has_include. In practice from the user point of view everything should work the same way it did before.
🗄 DFImageManager is also getting deprecated in favor of Nuke.
- Now requires iOS 8.0+
- Remove conditional compilation that relied on __has_include macros
- DFImageView can no longer be used for GIF playback, use DFAnimatedImageView instead
- ➕ Add DFCompositeImageDecoder
- ➕ Add DFWebPImageDecoder
- ➕ Add DFAnimatedImageView, DFAnimatedImageDecoder, DFAnimatedImageProcessor
- ✂ Remove +[DFImageManager sharedDecoder] dependency injector, there is now a single entry point to configure image manager and that is DFImageManagerConfiguration
- ✂ Remove -[DFURLImageFetcher initWithSession:sessionDelegate:] method and DFURLImageFetcherSessionDelegate protocol, this feature was too hardcode for basic built-in networking
- 🚚 DFImageManager/NSURLSession subspec is removed, sources made part of DFImageManager/Core subspec
- ➕ Add limited Carthage support
- #12 Lightweight generics thanks to @adly-holler
- DFImageManagerConfiguration no longer forces you to initialize it with image fetcher instance
- ➕ Add convenience class methods to DFImageManager that forward calls to sharedManager
- -[DFImageProcessing shouldProcessImage:forRequest:partial:] method is now optional
- [DFImageTask resume] method now returns image task
- 🛠 Fix -[NSCache df_recommendedTotalCostLimit] for watchOS
- ✂ Remove +[DFImageManager addSharedManager:] method
- ✂ Remove +[DFImageManager defaultManager] method
- DFImageManager/PhotosKit subspec is now optional
DFImageManager 0.8.0makes things more cohesive. Documentation, examples, demos, project structure - everything was revised and uncluttered. This release also features limited watchOS 2 support which at this point includes
- #28 DFImageFetching protocol now requires fetch operation to conform to simple DFImageFetchingOperation protocol
- 👍 #15 watchOS 2 support, at this moment only DFImageManager/Core and DFImageManager/NSURLSession subpecs are available
- DFImageManager/Extensions subspec with DFCompositeImageTask and DFProxyImageManager are no longer part of the framework. There are multiple more generic ways to implement those features.
- 📚 Revised documentation, examples, demos, project structure
- #75 Provide an easier way to enable progressive image decoding
- #73 -[DFImageManaging imageTaskForRequest:completion:] and -[DFImageManaging imageTaskForResource:completion:] methods return nonnull image task instead of nullable
- Cleaner DFImageRequestOptions implementation
- ✂ Remove canonical requests feature which was very application specific
- ⬇️ Reduce number of DFImageRequestPriority options, DFImageRequestPriority no longer bound to NSOperationQueuePriority
- Multiple implementation details are improved across the board
🚀 Minor technical release that fixes some typos and updates docs.
DFImageManager 0.7.1focuses on stability and performance. The main changes were made to the image processing. Images are now decompressed and scaled in a single step (x2-4 times faster depending on scale, significantly reduces memory usage) which allows DFImageManager to scale large images (~6000x4000 px) and prepare them for display with ease.
- #64 Image decompression and scaling are now made in a single step (x2-4 times faster depending on scale, significantly reduces memory usage)
- #70 Always draw decompressed images using kCGImageAlphaPremultipliedFirst and CGColorSpaceCreateDeviceRGB
- ♻️ #67 Refactor task queue in DFURLImageFetcher; Delay only execution of session tasks, not cancellation
- 🚚 #66 DFPhotosKitImageFetcher remove obsolete targetSize and contentMode checks in isRequestCacheEquivalent:toRequest method
- 🚚 #65 Remove excessive -[DFAnimatedImage initWithAnimatedGIFData:] method; make animatedImage property nonnull
- 🚚 #63 Remove unused methods from UIImage+DFImageUtilities
- #60 Make DFImageManager/Core subspec smaller by moving non-core classes to DFImageManager/Extensions subspec.
- ✂ Remove excessive DFImageViewDelegate
- ✂ Remove excessive imageTargetSize, imageContentMode and imageRequestOptions properties from DFImageView
- ✂ Remove excessive -[DFURLImageFetcherDelegate URLImageFetcher:didEncounterError:] method
- 🛠 #71 BUGFIX: DFImageManagerImageLoader sometimes fails to cancel fetch operations
- 🛠 #69 BUGFIX: Fix -[DFImageManager invalidateAndCancel]
- 🛠 #68 BUGFIX: Add optional -[DFImageFetching invalidate] method that would allow DFURLImageFetcher and DFAFImageFetcher to invalidate NSURLSession and release delegate
- 🛠 #62 BUGFIX: Fix GIF cost calculation in DFImageCache
- 🛠 BUGFIX: Fix DFImageView priority management
DFImageManager 0.7.0brings progressive image decoding support, and puts everything in its right place. It adds a separate stage for image decoding (see new
DFImageDecodingprotocol), and narrows role of the
DFImageFetchingprotocol which is now only responsible for fetching image data (NSData).
- 🔧 #46 Add a separate stage for image decoding. Add multiple ways to configure and extend image decoding: add DFImageDecoding protocol, DFImageDecoder class; add decoder to DFImageManagerConfiguration; add dependency injector to set shared decoder.
- 👍 #41 Add GIF support for PHAsset. Also includes major changes in DFImageFetching protocol, which is now only responsible for fetching image data (NSData).
- 👍 #28 Add progressive image decoding, including progressive JPEG support.
- ✂ Remove ALAssetsLibrary support due to the changes to the DFImageFetching protocol that now returns NSData instead of UIImage. It's easy to add you own application-specific ALAssetsLibrary support by either implementing DFImageFetching protocol and fetching NSData (and letting DFImageManager class do all the decoding, processing, caching and preheating), or by implementing DFImageManaging protocol itself.
- #56 Xcode 7 compatibility
- 0️⃣ #54 Add shouldDecompressImages property to DFImageDecoder. Default value is YES.
- 👍 #53 Add Carthage support
- 0️⃣ #52 Add defaultOptions class method to DFMutableImageRequestOptions which allows user to modify request options on per-application level
- #51 DFImageProcessor makes a decision of weather it should process GIF images, not DFImageManager
- 🚚 #50 Add removeAllCachedImages to DFImageManaging protocol; Add optional removeAllCachedImages to DFImageFetching protocol
- #49 Add shouldProcessImage:forRequest: method to DFImageProcessing protocol that would allow DFImageManager to skip processing step entirely
- 👍 #47 Better signature checks to identify image formats; Add WebP signature check
- ♻️ Refactor DFImageManagerImageLoader (private class that was introduced in the previous version)
- 👌 Improve DFImageView performance (use DFImageTask directly)
- ✂ Remove DFNetworkReachability and auto retry from DFImageView
v0.1.0September 17, 2015