IOS开发笔记 - 基于SDWebImage的网络图片加载处理
2013-07-16 09:27
567 查看
前言:
在IOS下通过URL读一张网络图片并不像Asp.net那样可以直接把图片路径放到图片路径的位置就ok,
而是需要我们通过一段类似流的方式去加载网络图片,接着才能把图片放入图片路径显示。
这里找了一段代码是用来加载图片:
通过这个方法处理后可以得到一个UIImage,这样就可以放入UI界面的UIImageView了。
/*-----------------------------------------------切入主题-----------------------------------------------*/
在APP开发中,加载网络图片中大多是以一连串的形式去加载图片,所以当图片多的话,线程就会卡死= =!
所以,考虑到用户体验,这里需要找一种方法去异步加载图片!
关于图片异步加载这个思路,其实我也不太懂,于是借鉴了网上一个开源的项目SDWebImage去对UIImageView进行扩展,
最终优化网络图片的加载,使之获得两个新特性:
1.多图片异步加载。
2.加载完图片会用一个图片管理器去进行缓存。
其中最重要的一段代码如下:
可以直接传入一个NSURL的图片路径对象对图片进行加载,若加载不为空则把图片缓存放入图片管理器单例保存起来,下一次再调用这个方式时会判断URL是否存在去读缓存。
这样异步加载,缓存图片的任务就完成了。
实例源码可以戳这里。OK。
主动用心,工作努力,坚持学习,坦诚分享,正面乐观,心存感恩
在IOS下通过URL读一张网络图片并不像Asp.net那样可以直接把图片路径放到图片路径的位置就ok,
而是需要我们通过一段类似流的方式去加载网络图片,接着才能把图片放入图片路径显示。
这里找了一段代码是用来加载图片:
-(UIImage *) getImageFromURL:(NSString *)fileURL { //NSLog(@"执行图片下载函数"); UIImage * result; NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:fileURL]]; result = [UIImage imageWithData:data]; return result; }
通过这个方法处理后可以得到一个UIImage,这样就可以放入UI界面的UIImageView了。
/*-----------------------------------------------切入主题-----------------------------------------------*/
在APP开发中,加载网络图片中大多是以一连串的形式去加载图片,所以当图片多的话,线程就会卡死= =!
所以,考虑到用户体验,这里需要找一种方法去异步加载图片!
关于图片异步加载这个思路,其实我也不太懂,于是借鉴了网上一个开源的项目SDWebImage去对UIImageView进行扩展,
最终优化网络图片的加载,使之获得两个新特性:
1.多图片异步加载。
2.加载完图片会用一个图片管理器去进行缓存。
其中最重要的一段代码如下:
- (void)setImageWithURL:(NSURL *)url refreshCache:(BOOL)refreshCache placeholderImage:(UIImage *)placeholder { // Remove in progress downloader from queue self.image = placeholder; if (url) { if ([[CustomObject sharedCustomObject] isExistImage:url]) { NSLog(@"存在图片"); self.image = [[CustomObject sharedCustomObject]getImage:url]; } else{ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSData * data = [[NSData alloc]initWithContentsOfURL:url]; UIImage *image = [[UIImage alloc]initWithData:data]; if (data != nil) { dispatch_async(dispatch_get_main_queue(), ^{ [[CustomObject sharedCustomObject] addImage:image key:url]; self.image = image; }); } }); } } }
可以直接传入一个NSURL的图片路径对象对图片进行加载,若加载不为空则把图片缓存放入图片管理器单例保存起来,下一次再调用这个方式时会判断URL是否存在去读缓存。
这样异步加载,缓存图片的任务就完成了。
实例源码可以戳这里。OK。
主动用心,工作努力,坚持学习,坦诚分享,正面乐观,心存感恩
相关文章推荐
- IOS开发笔记 - 基于SDWebImage的网络图片加载处理
- IOS开发笔记 - 基于SDWebImage的网络图片加载处理
- IOS开发笔记 - 基于SDWebImage的网络图片加载处理
- 【iOS开发】SDWebImage框架,加载图片,失败之后,居然直接跳过不再去请求网络数据了?
- iOS网络开发(6)网络图片加载开源框架SDWebImage
- iOS第三方网络图片加载- SDWebImage笔记(转)
- 基于SDWebImage的网络图片加载处理 & 获取网络中得UIimage
- iOS基于SDWebimage和urlConnection简单的带进度条图片加载
- iOS开发 - 完美解决SDWebImage加载多个图片内存崩溃的问题
- IOS-SDWebImage根据网络状态加载图片
- IOS开发-第三方SDWebImage下载网络图片的使用
- iOS开发之SDWebImage(一个可管理远程图片加载的类库)的使用
- iOS开发:利用SDWebImage实现图片加载与缓存
- iOS网络编程(三) 异步加载及缓存图片---->SDWebImage
- 【iOS开发】关于图片加载的第三方框架SDWebImage的使用
- SDWebimage 加载大量图片的时候内存泄露的解决方法(ios自学笔记)
- iOS开发使用sdWebImage实现对tableView的cell加载图片淡入动画
- iOS网络编程(三) 异步加载及缓存图片---->SDWebImage
- 【iOS】网络加载图片缓存与SDWebImage
- iOS开发 - SDWebImage使用(一个可管理远程图片加载的类库)