在tableviewcell 加载图片,解决第三方SDWebImage网络不是很通畅的状态下往下拉不能加载图片

原创 2015年07月10日 09:32:39

        最近做一个有关于新闻的一个加载图片的版块, 但在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;

  

版权声明:本文为博主原创文章,未经博主允许不得转载。

ios SDWebImage 加载图片流程

入口 setImageWithURL:placeholderImage:options: 会先把 placeholderImage 显示,然后 SDWebImageManager 根据 URL 开始处...
  • hengshujiyi
  • hengshujiyi
  • 2013年03月26日 09:57
  • 1288

iOS tableview SDWebImage加载多张图片内存警告(received memory warning)

最近项目中遇到一个问题 在tableview上展示多张图片,在加载的过程中,图片过多时,加载几张图片就崩溃了。内存溢出 为什么会出现这种情况 这个原因其实很明显,SDWebImage产生的图片缓存...
  • qq_25303213
  • qq_25303213
  • 2017年07月04日 17:04
  • 1019

SDWebImage的实现机制以及解决tableView卡的问题和实现图片的缓存机制

SDWebImage的实现机制以及解决tableView卡的问题和实现图片的缓存机制
  • ThatBoys
  • ThatBoys
  • 2016年07月12日 12:07
  • 1309

tableView使用SDWebImage加载图片时滚动优化

关于如何控制tableView滚动时不加载图片的解决方案: 为自定义cell设置一个标记,当tableView滚动时将标记置1,否则置0,在cell中使用SDWebImage加载图片之前对标记做...
  • lishuzhi1121
  • lishuzhi1121
  • 2016年07月17日 08:30
  • 445

SDWebImage加载图片问题

这几天遇到的问题还真是挺多的,说说今天遇到的问题吧,之前图片显示的好好的,今天测试人员说图片不显示了,我也感到很是纳闷,于是就找到相应的接口去查看问题,原来有两个图片链接和其他链接不一样,中间有空格,...
  • huanghaiyan_123
  • huanghaiyan_123
  • 2016年10月25日 14:53
  • 909

SDWebImage 里面给 UIImageView 加载图片的逻辑

1> SDWebImage中为UIImageView 提供了一个分类 UIImageView+WebCache.h, 这个分类中有一个最常用的接口 sd_setImageWithURL:placeho...
  • zxc8890304
  • zxc8890304
  • 2016年11月07日 17:25
  • 319

SDWebImage 加载图片原理

目前标注的类 通过标注的类,看懂应该没问题了。 SDWebImage是一个图片缓存的框架。相较于AFNetworking集成的UIImageView+AFNetworking.h,对于图片的缓...
  • Kun__kun
  • Kun__kun
  • 2016年08月25日 14:34
  • 1354

解析SDWebImage框架和RunLoop

一 SDWebImage下载图片的基本操作1 下载图片并显示(内存缓存&磁盘缓存) /* 第一个参数:图片的url地址 第二个参数:设置的占位图片 */ [sel...
  • xf931456371
  • xf931456371
  • 2016年03月19日 01:51
  • 1075

基于SDWebImage 缓存图片 针对ImageView和Button

/*********************************************************************************************  *...
  • u013756604
  • u013756604
  • 2017年05月24日 10:53
  • 884

iOS中使用SDWebImage加载图片失败之后如何重新加载

毫无疑问,SDWebImage绝对是我们平时做项目使用频率最广的第三方框架之一,良好的封装性和性能,真的是非常优秀,最近项目中使用了这个库函数加载网络图片,但是发现了一个问题,就是有时候网速不太好,比...
  • June_email
  • June_email
  • 2016年12月27日 18:00
  • 2139
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在tableviewcell 加载图片,解决第三方SDWebImage网络不是很通畅的状态下往下拉不能加载图片
举报原因:
原因补充:

(最多只允许输入30个字)