LRImageManager是一个功能齐全的Objective-C图片库。
它支持
使用CocoaPods
将LRImageManager添加到您的Podfile中
platform :ios, "6.0"
pod 'LRImageManager'
运行以下命令
pod install
手动
克隆项目或将其作为子模块添加。将整个LRImageManager文件夹拖到您的项目中(也在初始化子模块后,将Vendor/Reachability文件夹下的Reachability.h/m文件添加到项目中)。
要下载图片,您只需使用LRImageManager以下方法:
- (void)imageFromURL:(NSURL *)url
size:(CGSize)size
cacheStorageOptions:(LRCacheStorageOptions)cacheStorageOptions
completionHandler:(LRImageCompletionHandler)completionHandler;
只需指定下载URL和要调整的大小(通常为UIImageView容器大小)。如果不要求调整大小,则始终可以使用CGSizeZero。
结果图像将从提供的URL下载,调整到指定的大小,解压缩,并根据storageOptions参数,将其保存到内存(NSCache或NSDictionary)和磁盘。
LRCacheStorageOptions在LRImageCache.h中定义如下。
typedef NS_OPTIONS(NSUInteger, LRCacheStorageOptions)
{
LRCacheStorageOptionsNone = 0,
LRCacheStorageOptionsNSDictionary = 1 << 0,
LRCacheStorageOptionsNSCache = 1 << 1,
LRCacheStorageOptionsDiskCache = 1 << 2,
};
将其保存到NSDictionary而不是NSCache的选择在您无法承受某些图片从内存中丢失时非常有用(当然,在内存警告的情况下它们将被移除)。您不能同时在NSCache和NSDictionary中保存。
LRImageCompletionHandler包含下载的图像以及任何问题发生的错误。
typedef void (^LRImageCompletionHandler)(UIImage *image, NSError *error);
您始终可以取消特定的请求或所有进行中的请求
- (void)cancelImageRequestFromURL:(NSURL *)url size:(CGSize)size;
- (void)cancelAllRequests;
您可以将自己的图像缓存实现(可能是TMCache的包装)注入LRImageManager,该实现符合LRImageCache协议。如果不这样做,将为您创建一个合适的LRImageCache实例。此缓存由LRImageManager自动处理。如果您仍然希望为自己使用它,则可以轻松地保存和恢复图像
- (UIImage *)memCachedImageForKey:(NSString *)key;
- (UIImage *)memCachedImageForURL:(NSURL *)url size:(CGSize)size;
- (void)diskCachedImageForKey:(NSString *)key
completionBlock:(void (^)(UIImage *image))completionBlock;
- (void)diskCachedImageForURL:(NSURL *)url
size:(CGSize)size
completionBlock:(void (^)(UIImage *image))completionBlock;
- (void)cacheImage:(UIImage *)image
withKey:(NSString *)key
storageOptinos:(LRCacheStorageOptions)storageOptions;
- (void)cacheImage:(UIImage *)image
withURL:(NSURL *)url
size:(CGSize)size
storageOptions:(LRCacheStorageOptions)storageOptions;
为了轻松下载图片并将其分配给UIImageView容器,有一个便利的分类UIImageView+LRNetworking用于此目的。只需设置URL、占位符、大小和存储选项即可。还有一个用于取消当前为该UIImageView请求的方法。
- (void)lr_setImageWithURL:(NSURL *)url
placeholderImage:(UIImage *)placeholderImage
size:(CGSize)size
cacheStorageOptions:(LRCacheStorageOptions)cacheStorageOptions;
- (void)lr_cancelImageOperation;
您甚至可以在设置图片时选择不同的动画
typedef NS_ENUM(NSUInteger, LRImageViewAnimationType)
{
LRImageViewAnimationTypeNone,
LRImageViewAnimationTypeCrossDissolve,
LRImageViewAnimationTypeFlipFromLeft,
LRImageViewAnimationTypeFlipFromRight,
LRImageViewAnimationTypeFlipFromTop,
LRImageViewAnimationTypeFlipFromBottom,
LRImageViewAnimationTypeCurlUp,
LRImageViewAnimationTypeCurlDown,
};
LRImageViewAnimationTypeCrossDissolve
将默认使用。您可以通过更改 lr_animationTime
来调整动画时间。
您还可以通过 lr_activityIndicator
设置活动指示器视图,通过 lr_postProcessingBlock
为后台下载的图片制作精美的动画(例如应用灰度效果),或者希望在图片设置后执行代码块,使用 lr_completionHandler
。
LRImageManager 需要iOS 6.0 和 ARC。
在您的非ARC项目中仍然可以使用 LRImageManager。只需在每个源文件中设置 -fobjc-arc 编译器标志即可。
此库的最佳示例是作为 LRTVDBAPIClient 示例开发的全功能电视剧追踪应用。
LRImageManager 由 Luis Recuenco 创建:@luisrecuenco。
如果您想要为项目做出贡献,请按照以下步骤操作
LRImageManager 适用于 MIT 许可证。有关更多信息,请参阅 LICENSE 文件。