IOS加载网络图片的框架(共有4中方法)

框架名为:UIImage+WebCache.h   继承于UIimageView

框架里面加载网络图片的方法共4中:分别为1.普通加载   2.线程NSThread    3.

#import "ViewController.h"

#import "UIImage+WebCache.h"

@interface
ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

[super
viewDidLoad];

imageArray = [NSMutableArray
array];

for(int i =
0;i < 5;i++){

for(int j =
0;j < 6;j++){

UIImageView *imageView = [[UIImageView
alloc] initWithFrame:CGRectMake(j*65 +5, i*64 +10,
60, 60)];

imageView.backgroundColor = [UIColor
cyanColor];

[self.view
addSubview:imageView];

[imageArray
addObject:imageView];

}

}

UIButton *button = [UIButton
buttonWithType:UIButtonTypeRoundedRect];

button.frame =
CGRectMake(160,
400, 80,
30);

[button setTitle:@"载入"
forState:UIControlStateNormal];

[button addTarget:self
action:@selector(buttonAction)
forControlEvents:UIControlEventTouchUpInside];

[self.view
addSubview:button];

}

- (void)buttonAction{

for(UIImageView *imageView
in imageArray){

NSString *string =
@"http://img3.douban.com/view/photo/photo/public/p2221339563.jpg";

NSURL *url = [NSURL
URLWithString:string];

[imageView
setImageWithURL:url];

}

}

UIImage+WebCache.h  自定义一个方法

#import <UIKit/UIKit.h>

@interface UIImageView (WebCache)

- (void)setImageWithURL:(NSURL *)url;

@end

UIImage+WebCache.m--------  方法的实现

#import "UIImage+WebCache.h"

@implementation UIImageView (WebCache)

- (void)setImageWithURL:(NSURL *)url{

//第一种方法:普通的加载

/*

NSData *data = [NSData dataWithContentsOfURL:url];

UIImage *image = [UIImage imageWithData:data];

[self setImage:image];

*/

//第二种方法:线程

//NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(loadImage:) object:url];

//[thread start];

//第三种方法:队列

/*  NSOperationQueue *queue = [[NSOperationQueue alloc] init];

//操作数

NSBlockOperation *op = [NSBlockOperation blockOperationWithBlock:^{

NSData *data = [NSData dataWithContentsOfURL:url];

UIImage *image = [UIImage imageWithData:data];

//使用主队列来回到主线程

//在主线程上修改UI

[[NSOperationQueue mainQueue] addOperationWithBlock:^{

//修改UI界面

[self setImage:image];

}];

}];

[queue addOperation:op];

*/

//----------------GCD---------------

//    //1.创建Queue

//    dispatch_queue_t queue = dispatch_queue_create("com.xw.gcd.queue", DISPATCH_QUEUE_CONCURRENT);//并行队列

//

//    //2.创建要执行的任务,加到队列中

//    dispatch_async(queue, ^{

//

//        NSData *data = [NSData dataWithContentsOfURL:url];

//        UIImage *image = [UIImage imageWithData:data];

//        [self setImage:image];

//    });

//用系统给的queue---

//  (两个参数)

//参数1:优先级

//参数2:标识符

dispatch_queue_t globalQueue =
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,
0);

dispatch_async(globalQueue, ^{

//请求数据

NSData *data = [NSData
dataWithContentsOfURL:url];

UIImage *image = [UIImage
imageWithData:data];

//显示在UI界面上

dispatch_async(dispatch_get_main_queue(), ^{

//UI相关的代码

//UI界面的刷新最好回到主线程中

[self
setImage:image];

});

});

}

- (void)loadImage:(NSURL *)url{

NSData *data = [NSData
dataWithContentsOfURL:url];

UIImage *image = [UIImage
imageWithData:data];

[self
setImage:image];

}

@end

时间: 2024-10-17 13:07:11

IOS加载网络图片的框架(共有4中方法)的相关文章

加载网络图片的框架总结

Universal Image Loader:一个强大的图片加载库,包含各种各样的配置,最老牌,使用也最广泛. Picasso: Square出品,必属精品.和OkHttp搭配起来更配呦! Volley ImageLoader:Google官方出品,可惜不能加载本地图片~ Fresco:Facebook出的,天生骄傲!不是一般的强大.  http://fresco-cn.org/docs/index.html Glide:Google推荐的图片加载库,专注于流畅的滚动.

IOS 加载网络图片2

//1. NSData dataWithContentsOfURL // [self.icon setImage:[UIImage imageWithData:[NSData dataWithContentsOfURL:tempUrl]]]; //2. dispath形式添加到异步处理 // [self imageDownLoadByUrlASYNC:tempUrl Complete:^(UIImage *image) { // [self.icon setImage:image]; // }]

IOS 加载网络图片的方式对比

//1. NSData dataWithContentsOfURL // [self.icon setImage:[UIImage imageWithData:[NSData dataWithContentsOfURL:tempUrl]]]; //2. dispath形式添加到异步处理 // [self imageDownLoadByUrlASYNC:tempUrl Complete:^(UIImage *image) { // [self.icon setImage:image]; // }]

Afianl框架里面的FinalBitmap加载网络图片

在Afianl框架里,FinalBitmap如何加载网络图片?有什么简单的方法吗?现在让麦子学院的android开发老师讲讲afina框架里面的finalbitmap加载网络图片的方法,Afinal里边FinalBitmap:用于显现bitmap图像,而无需思考线程并发和oom等疑问. 1.测验恳求 运用页面翻开http://avatar.csdn.net/C/6/8/1_bz419927089.jpg"可以看到一张图像. 2.新建FinalBitmap目标 1 FinalBitmap bitm

iOS开发swift版异步加载网络图片(带缓存和缺省图片)

iOS开发之swift版异步加载网络图片 与SDWebImage异步加载网络图片的功能相似,只是代码比较简单,功能没有SD的完善与强大,支持缺省添加图片,支持本地缓存. 异步加载图片的核心代码如下:  func setZYHWebImage(url:NSString?, defaultImage:NSString?, isCache:Bool){         var ZYHImage:UIImage?         if url == nil {             return   

iOS 开发之 为UIButton添加类别方法加载网络图片

iOS 开发之 为UIButton添加类别方法加载网络图片 使用GCD线程队列实现 工程如下: UIButton+WebCache.h #import <UIKit/UIKit.h> // 为Button添加类别方法 @interface UIButton (WebCache) - (void)xr_setButtonImageWithUrl:(NSString *)urlStr; @end UIButton+WebCache.m #import "UIButton+WebCache

【iOS开发】关于图片加载的第三方框架SDWebImage的使用

SDWebImage是一个第三方框架,用于加载网络图片,还有其他一些好的功能 使用步骤 下载地址 https://github.com/rs/SDWebImage 下载以后解压,解压以后是下图 然后将文件中的SDWebImage文件夹拖到项目中,然后在项目中使用 使用框架 #import "SDWebImage/UIImageView+WebCache.h"//引入头文件 -(UITableViewCell *)tableView:(UITableView *)tableView ce

Android利用Volley框架加载网络图片

Volley框架是在Google I/O 2013上Volley发布的,目的是使Android平台上的网络通信库,能使网络通信更快,更简单,更健壮.我们也简单了解下Volley引入的背景,在Volley出现以前,我们可能面临如下的问题,比如要在ListView或是GridView中加载数量较多的图片时:先在ListAdapter#getView()里开始图像的读取,再通过AsyncTask等机制使用HttpURLConnection从服务器去的图片资源,然后在AsyncTask#onPostEx

使用Volley框架的ImageLoader加载网络图片

Volley框架在请求网络图片方面也做了很多工作,提供了好几种方法.本文介绍使用ImageLoader来进行网络图片的加载. ImageLoader的内部使用ImageRequest来实现,它的构造器可以传入一个ImageCache缓存形参,实现了图片缓存的功能,同时还可以过滤重复链接,避免重复发送请求. 下面是ImageLoader加载图片的实现方法: public void displayImg(View view){ ImageView imageView = (ImageView)thi