最新消息:iOS编程开发交流群(6906921) ,Mac.Cocoa开发交流群(7758675) 欢迎iOS/macOS开发编程爱好及学习者加入!

iOS异步加载网络图片下载类带缓存

iOS 天狐 10486浏览 0评论

异步图片下载类 带缓存 继承UIimage

DownloadImgView.h

DownloadImgView.h#import <UIKit/UIKit.h>

@interface DownloadImgView : UIImageView

@property (strong, nonatomic) NSURL *imageURL;
@property (strong, nonatomic) UIImage *placeholderImage;
@property (nonatomic) CGSize scaleSize;

@end

DownloadImgView.m

#import "DownloadImgView.h"
#import "TMCache.h"

@implementation DownloadImgView

- (void)setImageURL:(NSURL *)url
{
    _imageURL = url;

    [[TMCache sharedCache] objectForKey:[url absoluteString]
                                  block:^(TMCache *cache, NSString *key, id object) {
                                      if (object) {
                                          [self setImageOnMainThread:(UIImage *)object];
                                          return;
                                      }

                                      NSLog(@"cache miss, requesting %@", url);

                                      NSURLResponse *response = nil;
                                      NSURLRequest *request = [NSURLRequest requestWithURL:url];
                                      NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];

                                      UIImage *image = [[UIImage alloc] initWithData:data scale:[[UIScreen mainScreen] scale]];
                                      if (!CGSizeEqualToSize(self.scaleSize,CGSizeZero)) {
                                          image = [self reSizeImage:image toSize:CGSizeMake(60, 80)];
                                      }
                                      [self setImageOnMainThread:image];

                                      [[TMCache sharedCache] setObject:image forKey:[url absoluteString]];

                                  }];
}

- (void)setImageOnMainThread:(UIImage *)image
{

    NSLog(@"setting view image %@", NSStringFromCGSize(image.size));

    dispatch_async(dispatch_get_main_queue(), ^{
        if (!image)
            if (_placeholderImage) {
                self.image = _placeholderImage;
            }else{
                return;
            }
        else{
            self.image = image;
        }

    });
}

- (UIImage *)reSizeImage:(UIImage *)image toSize:(CGSize)reSize

{
    UIGraphicsBeginImageContext(CGSizeMake(reSize.width, reSize.height));
    [image drawInRect:CGRectMake(0, 0, reSize.width, reSize.height)];
    UIImage *reSizeImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return reSizeImage;

}

使用:

DownloadImgView *imageView = [[DownloadImgView alloc] initWithFrame:CGRectMake(17, 17, 90.0f, 90.0f)];
NSString *imageUrl = "http://www.baidu.com/img/bdlogo.gif"
NSURL *requestUrl = [NSURL URLWithString:imageUrl];
imageView.scaleSize = CGSizeMake(60, 80);
imageView.imageURL = requestUrl;

转载请注明:天狐博客 » iOS异步加载网络图片下载类带缓存

微信 OR 支付宝 扫描二维码
为天狐 打赏
非常感谢你的支持,哥会继续努力!
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址