码迷,mamicode.com
首页 > Web开发 > 详细

模仿SDWebImage实现异步加载图片

时间:2014-07-23 12:27:16      阅读:442      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   文件   

模仿SDWebImage实现异步加载图片

bubuko.com,布布扣

SDWebImage想必大家都不陌生吧,要实现它的图片异步加载功能这个还是很简单的.

注意:此处我只实现了异步加载图片,并没有将文件缓存到本地的打算哦:)

源码:

UIImageView+YXImageView.h

//
//  UIImageView+YXImageView.h
//  PicDemo
//
//  Copyright (c) 2014年 Y.X. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface UIImageView (YXImageView)

- (void)setImageWithURL:(NSString *)url placeholderImage:(UIImage *)placeholder;

@end

UIImageView+YXImageView.m

//
//  UIImageView+YXImageView.m
//  PicDemo
//
//  Copyright (c) 2014年 Y.X. All rights reserved.
//

#import "UIImageView+YXImageView.h"

@implementation UIImageView (YXImageView)

- (void)setImageWithURL:(NSString *)url placeholderImage:(UIImage *)placeholder
{
    // 先设置placeholder
    self.image = placeholder;
    
    // 异步下载完了之后再加载新的图片
    if (url)
    {
        // 子线程下载
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            
            NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];
            NSData *data          = [NSURLConnection sendSynchronousRequest:request
                                                          returningResponse:nil
                                                                      error:nil];
            // 主线程更新
            dispatch_async(dispatch_get_main_queue(), ^{
                if (data)
                {
                    self.image = [UIImage imageWithData:data];
                    [self setNeedsDisplay];
                }
            });
        });
    }
}

@end

使用的源码:

RootViewController.m

//
//  RootViewController.m
//  PicDemo
//
//  Copyright (c) 2014年 Y.X. All rights reserved.
//

#import "RootViewController.h"
#import "UIImageView+YXImageView.h"

@interface RootViewController ()

@end

@implementation RootViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.view.bounds];
    [self.view addSubview:imageView];
    
    [imageView setImageWithURL:@"http://pic.cnitblog.com/avatar/572952/20140226185251.png"
              placeholderImage:[UIImage imageNamed:@"1.png"]];
}

@end

核心代码:

GCD部分就不讲解了,关键的一步是需要重绘view本身,这个涨知识了:)

bubuko.com,布布扣

除了下载图片,你还可以做其他操作呢:)

bubuko.com,布布扣

模仿SDWebImage实现异步加载图片,布布扣,bubuko.com

模仿SDWebImage实现异步加载图片

标签:style   blog   http   color   使用   文件   

原文地址:http://www.cnblogs.com/YouXianMing/p/3862208.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!