从网上加载图片,当网速慢或是图片较大时,你会发现程序可能会失去对用户的响应.这样你可以用多线程:
解决的方法是从网上down下来一次后就将图片缓存起来,再次显示的时候就不用去下载。
假设有多张图片,用循环存多个路径:
需要写GetImage类,实现刚才的方法.
GetImage.h文件如下:
GetImage.m文件如下:
至此,存储完毕,在用的时候调用刚才存的路径就可以了,可用方法[[UIImage alloc] initWithContentsOfFile:imagePath]
-(void) buildData { NSOperationQueue *queue = [NSOperationQueue new]; [queue setMaxConcurrentOperationCount:NSOperationQueueDefaultMaxConcurrentOperationCount]; NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(downloadImage) object:nil]; [queue addOperation:operation]; [operation release]; }
解决的方法是从网上down下来一次后就将图片缓存起来,再次显示的时候就不用去下载。
假设有多张图片,用循环存多个路径:
- (void)downloadImage { NSString *imagePath; for (...) imagePath = [GetImage saveImage:imageUrlPath withCache:@""]; }
需要写GetImage类,实现刚才的方法.
GetImage.h文件如下:
#import <Foundation/Foundation.h> @interface GetImage : NSObject { } +(NSString *) saveImage:(NSString *)urlpath withCache:(NSString *)filename; @end
GetImage.m文件如下:
@implementation GetImage +(NSString *) saveImage:(NSString *)urlpath withCache:(NSString *)filename { NSData *retureData=nil; NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init]; NSFileManager *fileManager = [NSFileManager defaultManager]; NSArray *cache = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSString *cachePath = [cache objectAtIndex:0] ; filename=[filename stringByAppendingFormat:@"%@",[urlpath lastPathComponent]]; NSString *filepath = [cachePath stringByAppendingString:@"/"]; filepath=[filepath stringByAppendingString:filename]; NSLog(@"filepath=%@",filepath); BOOL success; success = [fileManager fileExistsAtPath:filepath]; if (success) { return filepath; } else { NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; [request setURL:[NSURL URLWithString:urlpath]]; [request setHTTPMethod:@"GET"]; NSURLResponse *response; NSError *error; retureData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; if ([fileManager createDirectoryAtPath:cachePath attributes:nil]==NO){ ////NSLog(@"fileManager createDirectoryAtPath:cachePath attributes:nil"); } if ([retureData writeToFile:filepath atomically:YES]){ NSLog(@"save Image Success"); } else { NSLog(@"save Image Fail"); } } if (retureData !=nil && [fileManager fileExistsAtPath:filepath]){ return filepath; } [pool release]; NSLog(@" Image return nil"); return nil; }
至此,存储完毕,在用的时候调用刚才存的路径就可以了,可用方法[[UIImage alloc] initWithContentsOfFile:imagePath]
发表评论
-
选取相册视频,并获得路径。
2012-07-18 10:18 1662- (NSString*)videoAssetURLT ... -
ad-hoc及企业版app打包之后在itunes中图标为白色的问题
2012-07-03 16:36 1248准备512*512大小的png(将要显示的图片),在终端执行以 ... -
iOS工具类之16进制颜色转为UIColor
2012-06-27 16:33 6711将16进制颜色如#FF0000,转换为UIColor: ... -
调试内存问题
2012-06-12 10:14 679Project -> Edit Scheme -> ... -
[转]iOS开发之详解剪贴板
2011-12-05 11:43 1469概述: 在iOS中, ... -
过滤html标签(修改版)
2011-12-01 10:44 1264- (NSString *)flattenHTML:(NS ... -
[转] iPhone:UIImage 图像截取,等比例缩放
2011-09-29 10:02 7770@interface UIImage(UIImageSc ... -
[转载]iPhone文件系统NSFileManager
2011-09-09 11:41 1016iPhone文件系统:创建、重命名以及删除文件 NSFile ... -
UIImage用imageNamed的内存问题
2011-09-08 09:33 1228@implementation UIImage(imageNa ... -
截屏存图片到相册或者指定路径
2011-06-13 11:15 2714#import <QuartzCore/Quartz ... -
存图片和视频到iPhone相册
2011-04-19 09:33 7594UIImage *img = [UIImage i ... -
选择相册图片并保存
2011-04-19 08:18 1758.h中: <UINavigationControl ... -
Push一个横屏页面
2011-03-28 16:39 2060[[UIDevice currentDevice] setOr ... -
NSPredicate及正则的一点使用
2011-03-21 14:38 6872记录一点正则表达式的使用。 例如:判断字符串首字母是否为字母 ... -
建立到服务器的连接
2011-02-14 10:47 1312在Mac OS X上,可以使用NSHost和NSS ... -
iPhone中的Sqlite3数据库操作
2010-12-27 09:38 1288可将数据库操作写入一个类,这样用起来也很方便。例如: ... -
Cocos2d游戏场景切换
2010-12-15 09:51 2615在游戏中,我们需要点击菜单选项进入相应的画面,而我们常 ... -
NSNotificationCenter随笔
2010-12-10 13:21 1470可在AppDelegate.h中定义,之后可全局使用。 ... -
Category的使用
2010-12-09 16:17 1011Category的用法有时使得程序很方便,可将已有的类 ... -
iPhone判断是否接入网络
2010-12-06 10:41 2349在这里介绍一种较为简单的判断是否连接网络的方法,首先要引入 ...
相关推荐
IPhone TableView 图片异步加载
iphone uitableview图片延迟加载实例,一个官方例子,自己研究的时候加入了详细的注释,传上来方便自己以后使用。
iphone UITableView异步加载图片
iPhone上实现异步加载图片并缓存代码,供大家一起共同分享学习。
这是iPhone之手势切换图片示例程序,具体参考: http://blog.csdn.net/htttw/article/details/7881955
iPhone应用程序编程指南-中文版 pdf iPhone应用程序编程指南-中文版 pdf iPhone应用程序编程指南-中文版 pdf
ios iphone异步加载图片EGOTableViewPullRefresh 非常好用 可以加快网络图片加载的速度,必不可少
iPhone 程序开发基础教程.pdf,iPhone软件工程师可以看看。
iPhone应用程序编程指南(中文) 来自苹果开发者中心参考库
傻瓜教程:把Iphone程序连接真机调试,很好的东西
iphone 远程连接 mysql 实例
SDWebImage是以Category的形式对UIImageView进行扩展。 是git上的一个开源项目 使用了它之后,让UIImageView可以直接设置图片的Url地址,剩下的下载,缓存就交给SDWebImage处理吧。
由于iPhone应用程序中的图片非标准格式,直接拷贝到windows上无法预览,需要此工具转换下才能正常显示
iPhone应用程序编程指南iPhone应用程序编程指南iPhone应用程序编程指南
iphone 程序简单框架 应用程序执行开始到视图呈现
④-第一个iphone程序iPhone101
公司项目开发中,发现iPhoneX上吸底元素存在被小黑条遮挡的问题 原因 在苹果 iPhoneX 、iPhone XR等机型上,物理Home键被取消,改为底部小黑条替代home键功能,从而导致吸底元素会被小黑条遮挡覆盖的问题 解决方案 ...
仿iPhone/iPod动态图片浏览器 仿iPhone/iPod动态图片浏览器 仿iPhone/iPod动态图片浏览器
Iphone开发系列源码——Image图片缩放随着手指Iphone开发系列源码——Image图片缩放随着手指Iphone开发系列源码——Image图片缩放随着手指Iphone开发系列源码——Image图片缩放随着手指Iphone开发系列源码——Image...
iPhone应用程序编程指南(中文版)iPhone应用程序编程指南(中文版)iPhone应用程序编程指南(中文版)iPhone应用程序编程指南(中文版)iPhone应用程序编程指南(中文版)