在tableviewcell 加载图片,解决第三方SDWebImage网络不是很通畅的状态下往下拉不能加载图片
2015-07-10 09:32
686 查看
最近做一个有关于新闻的一个加载图片的版块, 但在cell加载图片重用的时候,当往下拉的时候一个cell上的图片不断的跳.就是读取对应的图片不准确.
使用第三方SDWebImage,能避免图片读取对应的图片不准确带来的问题,但是在网络不是很通畅的状态下往下拉,发现读到一定的数量的图片.下面的图片就不会加载了.
为了解决读取对应的图片不准确,无论怎么拉都能加载图片的问题.代码如下:
static NSString *cellID = @"newsCell";
LZDNewsCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
if (cell == nil) {
cell = [[LZDNewsCell alloc]initWithStyle:(UITableViewCellStyleDefault) reuseIdentifier:cellID];
}
//设置图片的显示内容模式
cell.imgsrc.contentMode = UIViewContentModeScaleAspectFit;
//加载数据模型
News *news = self.data[indexPath.row];
//在沙盒中取图
NSData *data = [NSData dataWithContentsOfFile:[self filePathWithFileName:news.title]];
UIImage *image= [UIImage imageWithData:data];
NSURL *url = [NSURL URLWithString:news.imgsrc];
if (image != nil) {
cell.imgsrc.image = image;
}else {
//缓存之前的覆盖图片
cell.imgsrc.image = [UIImage imageNamed:@"222.jpg"];
}
if(!image && url){
//设置子线程加载,优先级设置为最高级
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSString *title = news.title;// 要在线程堵塞之前记录名称
//子线程中直接加载图片
NSData *imgData = [NSData dataWithContentsOfURL:url];
//把图片数据直接写进沙盒
[imgData writeToFile:[self filePathWithFileName:title] atomically:YES];
dispatch_sync(dispatch_get_main_queue(), ^{
//更新对应的cell
if(indexPath.row < self.data.count)
[self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:(UITableViewRowAnimationNone)];
});
});
}
cell.newsFrame = newF;
return cell;
使用第三方SDWebImage,能避免图片读取对应的图片不准确带来的问题,但是在网络不是很通畅的状态下往下拉,发现读到一定的数量的图片.下面的图片就不会加载了.
为了解决读取对应的图片不准确,无论怎么拉都能加载图片的问题.代码如下:
static NSString *cellID = @"newsCell";
LZDNewsCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
if (cell == nil) {
cell = [[LZDNewsCell alloc]initWithStyle:(UITableViewCellStyleDefault) reuseIdentifier:cellID];
}
//设置图片的显示内容模式
cell.imgsrc.contentMode = UIViewContentModeScaleAspectFit;
//加载数据模型
News *news = self.data[indexPath.row];
//在沙盒中取图
NSData *data = [NSData dataWithContentsOfFile:[self filePathWithFileName:news.title]];
UIImage *image= [UIImage imageWithData:data];
NSURL *url = [NSURL URLWithString:news.imgsrc];
if (image != nil) {
cell.imgsrc.image = image;
}else {
//缓存之前的覆盖图片
cell.imgsrc.image = [UIImage imageNamed:@"222.jpg"];
}
if(!image && url){
//设置子线程加载,优先级设置为最高级
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSString *title = news.title;// 要在线程堵塞之前记录名称
//子线程中直接加载图片
NSData *imgData = [NSData dataWithContentsOfURL:url];
//把图片数据直接写进沙盒
[imgData writeToFile:[self filePathWithFileName:title] atomically:YES];
dispatch_sync(dispatch_get_main_queue(), ^{
//更新对应的cell
if(indexPath.row < self.data.count)
[self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:(UITableViewRowAnimationNone)];
});
});
}
cell.newsFrame = newF;
return cell;
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- Android和IOS的浏览器中检测是否安装某个客户端的方法
- javascript实现阻止iOS APP中的链接打开Safari浏览器
- iOS开发之路--微博OAuth授权_取得用户授权的accessToken
- ios通过按钮点击异步加载图片
- ios中图像进行压缩方法汇总
- IOS检测指定路径的文件是否存在
- iOS、Mac OS X系统中编程实现汉字转拼音的方法(超级简单)