700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > iOS开发swift版异步加载网络图片(带缓存和缺省图片)

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

时间:2023-06-29 22:45:49

相关推荐

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

iOS开发之swift版异步加载网络图片

与SDWebImage异步加载网络图片的功能相似,只是代码比较简单,功能没有SD的完善与强大,支持缺省添加图片,支持本地缓存。

异步加载图片的核心代码如下:

funcsetZYHWebImage(url:NSString?,defaultImage:NSString?,isCache:Bool){varZYHImage:UIImage?ifurl==nil{return}//设置默认图片ifdefaultImage!=nil{self.image=UIImage(named:defaultImage!)}//是否进行缓存处理ifisCache{//缓存管理类vardata:NSData?=ZYHWebImageChcheCenter.readCacheFromUrl(url!)ifdata!=nil{ZYHImage=UIImage(data:data!)self.image=ZYHImage}else{//获取异步线程vardispath=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH,0)dispatch_async(dispath,{()->VoidinvarURL:NSURL=NSURL(string:url!)!vardata:NSData?=NSData(contentsOfURL:URL)ifdata!=nil{ZYHImage=UIImage(data:data!)//写缓存ZYHWebImageChcheCenter.writeCacheToUrl(url!,data:data!)//主线程中刷新UIdispatch_async(dispatch_get_main_queue(),{()->Voidin//刷新主UIself.image=ZYHImage})}})}}else{vardispath=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH,0)dispatch_async(dispath,{()->VoidinvarURL:NSURL=NSURL(string:url!)!vardata:NSData?=NSData(contentsOfURL:URL)ifdata!=nil{ZYHImage=UIImage(data:data!)//写缓存dispatch_async(dispatch_get_main_queue(),{()->Voidin//刷新主UIself.image=ZYHImage})}})}}}

缓存的处理这里采用的是写文件的方式,通过文件名来对缓存进行管理,这个框架还不完善,后面会加入缓存清除等功能。缓存的核心代码如下:

classfuncreadCacheFromUrl(url:NSString)->NSData?{vardata:NSData?varpath:NSString=ZYHWebImageChcheCenter.getFullCachePathFromUrl(url)ifNSFileManager.defaultManager().fileExistsAtPath(path){data=NSData.dataWithContentsOfMappedFile(path)as?NSData}returndata}classfuncwriteCacheToUrl(url:NSString,data:NSData){varpath:NSString=ZYHWebImageChcheCenter.getFullCachePathFromUrl(url)println(data.writeToFile(path,atomically:true))}//设置缓存路径classfuncgetFullCachePathFromUrl(url:NSString)->NSString{varchchePath=NSHomeDirectory().stringByAppendingString("/Library/Caches/MyCache")varfileManager:NSFileManager=NSFileManager.defaultManager()fileManager.fileExistsAtPath(chchePath)if!(fileManager.fileExistsAtPath(chchePath)){fileManager.createDirectoryAtPath(chchePath,withIntermediateDirectories:true,attributes:nil,error:nil)}//进行字符串处理varnewURL:NSStringnewURL=ZYHWebImageChcheCenter.stringToZYHString(url)chchePath=chchePath.stringByAppendingFormat("/%@",newURL)returnchchePath}classfuncstringToZYHString(str:NSString)->NSString{varnewStr:NSMutableString=NSMutableString()forvari:NSInteger=0;i<str.length;i++{varc:unichar=str.characterAtIndex(i)if(c>=48&&c<=57)||(c>=65&&c<=90)||(c>=97&&c<=122){newStr.appendFormat("%c",c)}}returnnewStr.copy()asNSString}

框架的github地址,欢迎指正与扩展:/ZYHshao/swift-ZYHWebImage

因xcode的版本不同,swift语言语法随环境时常会变化,此版本在6.1中可用,更高版本中需要修改少部分即可。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。