LiquorImage 1.0.1

LiquorImage 1.0.1

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布上次发布2016年1月

Andrew Pleshkov维护。



图片加载 + 背景变换。

特性

  • 在显示之前,在后台转换下载的图片
  • 持久缓存
  • 预加载
  • iOS 7.0+
  • 已文档化
  • 已注释为可为空
  • UIImageView(前缀)类别

演示图片取自Flickr公共源

变换

想要调整和圆化下载的大图,使其变为正方形?有时通过CALayer等操作来实现是可以的,但这可能会降低如UICollectionView的性能。因此,LiquorImage帮助在后台转换下载的图片

每个UICollectionView cell包含与之对应的两张不同版本的图片:作为背景的模糊版本和前景中的调整大小和圆角版本

Demo

//////////////////////////////
// ForegroundImageBuilder.m //
//////////////////////////////

@implementation ForegroundImageBuilder

- (UIImage *)imageFromData:(NSData *)data error:(NSError *__autoreleasing  _Nullable *)error {
    UIImage *image = [[LQDefaultImageBuilder shared] imageFromData:data error:error];
    if (image) {
        image = [image roundedCornerImage:15 borderSize:0];
    }
    return image;
}

@end

////////////
// Cell.m //
////////////

...

- (void)displayImage:(FlickrImage *)image {
    ...

    self.thumbImageTask = ({
        LQImageLoaderTask *task = [[LQImageLoaderTask alloc] initWithURL:url];
        // setting ForegroundImageBuilder
        [task setImageBuilder:[ForegroundImageBuilder new] withMemoryCacheIdentifier:@"thumb"];
        task.delegate = self;
        task;
    });

    self.backgroundImageTask = ({
        LQImageLoaderTask *task = [[LQImageLoaderTask alloc] initWithURL:url];
        CGSize imageSize = self.backgroundImageView.bounds.size;
        // block-based image builder with blurring
        id<LQImageBuilding> builder = [[LQBlockImageBuilder alloc] initWithBlock:^UIImage * _Nullable(NSData * _Nonnull data, NSError *__autoreleasing  _Nullable * _Nonnull error) {
            UIImage *image = [[LQDefaultImageBuilder shared] imageFromData:data error:error];
            image = [image resizedImage:imageSize interpolationQuality:kCGInterpolationDefault];
            image = [image applyDarkEffect];
            return image;
        }];
        [task setImageBuilder:builder withMemoryCacheIdentifier:@"bg"];
        task.delegate = self;
        task;
    });

    // start tasks
    [[LQImageLoader shared] startTask:self.thumbImageTask];
    [[LQImageLoader shared] startTask:self.backgroundImageTask];
}

...

预加载

预加载图片,并在显示收藏视图之前可选地表示进度

Preloading demo

[[LQImageLoader shared] preloadImageURLs:preloads withProgress:^(LQImageLoaderPreloadingContext * _Nonnull context) {
    textLabel.text = [NSString stringWithFormat:@"Preloading:\n\n%lu / %lu", (unsigned long)context.completedCount, (unsigned long)context.totalCount];
} completion:^(LQImageLoaderPreloadingContext * _Nonnull context) {
    ...
}];

持久缓存

加载数据默认使用HTTP响应缓存信息,但您可以通过HTTPCache控制图片的max-age(最大年龄)

[[LQImageLoader shared].HTTPCache setURL:url maxAgeInSeconds:1000];