From 1dad3cb3361c49a503b3266259f9cc7105a7f348 Mon Sep 17 00:00:00 2001 From: Mattt Thompson Date: Fri, 5 Aug 2011 10:41:20 -0500 Subject: [PATCH] Adding method, adding a callback for when image was loaded. This fixes a shortcoming where images loaded into UITableViewCells wouldn't show up until being recycled, needing to layout its subviews --- AFNetworking/UIImageView+AFNetworking.h | 16 +++++++++++++-- AFNetworking/UIImageView+AFNetworking.m | 27 ++++++++++++++++++++++--- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/AFNetworking/UIImageView+AFNetworking.h b/AFNetworking/UIImageView+AFNetworking.h index e3679b4..0b79875 100644 --- a/AFNetworking/UIImageView+AFNetworking.h +++ b/AFNetworking/UIImageView+AFNetworking.h @@ -26,7 +26,19 @@ @interface UIImageView (AFNetworking) - (void)setImageWithURL:(NSURL *)url; -- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholderImage; -- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholderImage imageSize:(CGSize)imageSize options:(AFImageRequestOptions)options; + +- (void)setImageWithURL:(NSURL *)url + placeholderImage:(UIImage *)placeholderImage; + +- (void)setImageWithURL:(NSURL *)url + placeholderImage:(UIImage *)placeholderImage + imageSize:(CGSize)imageSize + options:(AFImageRequestOptions)options; + +- (void)setImageWithURL:(NSURL *)url + placeholderImage:(UIImage *)placeholderImage + imageSize:(CGSize)imageSize + options:(AFImageRequestOptions)options + block:(void (^)(UIImage *image))block; @end diff --git a/AFNetworking/UIImageView+AFNetworking.m b/AFNetworking/UIImageView+AFNetworking.m index bd7f3c9..a0eba8a 100644 --- a/AFNetworking/UIImageView+AFNetworking.m +++ b/AFNetworking/UIImageView+AFNetworking.m @@ -59,16 +59,33 @@ static NSString * const kUIImageViewImageRequestObjectKey = @"imageRequestOperat return _imageRequestOperationQueue; } + +#pragma mark - - (void)setImageWithURL:(NSURL *)url { [self setImageWithURL:url placeholderImage:nil]; } -- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholderImage { +- (void)setImageWithURL:(NSURL *)url + placeholderImage:(UIImage *)placeholderImage +{ [self setImageWithURL:url placeholderImage:placeholderImage imageSize:self.frame.size options:AFImageRequestDefaultOptions]; } -- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholderImage imageSize:(CGSize)imageSize options:(AFImageRequestOptions)options { +- (void)setImageWithURL:(NSURL *)url + placeholderImage:(UIImage *)placeholderImage + imageSize:(CGSize)imageSize + options:(AFImageRequestOptions)options +{ + [self setImageWithURL:url placeholderImage:placeholderImage imageSize:imageSize options:options block:nil]; +} + +- (void)setImageWithURL:(NSURL *)url + placeholderImage:(UIImage *)placeholderImage + imageSize:(CGSize)imageSize + options:(AFImageRequestOptions)options + block:(void (^)(UIImage *image))block +{ if (!url) { return; } @@ -76,7 +93,7 @@ static NSString * const kUIImageViewImageRequestObjectKey = @"imageRequestOperat NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLCacheStorageAllowed timeoutInterval:30.0]; [request setHTTPShouldHandleCookies:NO]; [request setHTTPShouldUsePipelining:YES]; - + UIImage *cachedImage = [[AFImageCache sharedImageCache] cachedImageForRequest:request imageSize:imageSize options:options]; if (cachedImage) { self.image = cachedImage; @@ -89,6 +106,10 @@ static NSString * const kUIImageViewImageRequestObjectKey = @"imageRequestOperat } else { self.image = placeholderImage; } + + if (block) { + block(image); + } }]; [[[self class] sharedImageRequestOperationQueue] addOperation:self.imageRequestOperation];