御医与神医,杏花村乐福酒,湘雅附二医院预约挂号
最近做一个ios程序的功能,要求图片在本地的话直接显示,不在本地则去网上下载,然后存储。到网上找完资料之后根据自己的理解实现了功能,下面说说思路。
实现一个继承imageview的类,这个类主要功能就是根据传来的图片名字判断本地是否存在该图片,不存在则下载,存在就直接显示。
- (void)drawrect:(cgrect)rect {
nsstring *docdir = [nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes) objectatindex:0];
nsstring *picpath = [docdir stringbyappendingpathcomponent:self.picname]; //获取路径
if ([[nsfilemanager defaultmanager] fileexistsatpath:picpath]) {
//存在图片的时候直接读取
nsdata *data = [nsdata datawithcontentsoffile:picpath];
self.thumbnail.image = [uiimage imagewithdata:data];
}
else{//开线程去下载并存储
[nsthread detachnewthreadselector:@selector(loadimage) totarget:self withobject:nil];
}
}
- (void)loadimage {
//下载图片
nsurl *url=[nsurl urlwithstring:@"https://www.baidu.com/img/baidu_sylogo1.gif"];
uiimage *img = [[uiimage alloc] initwithdata:[nsdata datawithcontentsofurl:url]];
self.thumbnail.image = img;
//存储图片
nsstring *docdir = [nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes) objectatindex:0];
nsstring *picpath=[docdir stringbyappendingpathcomponent:self.picname];
//将图片写到documents文件中
[uiimagepngrepresentation(self.thumbnail.image) writetofile: picpath atomically:yes];
//线程退出
[nsthread exit];
}
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
网友评论