【第22期】观点:IT 行业加班,到底有没有价值?

在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;

  

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

相关文章推荐

在移动网络状态下,选择加载图片模式

这是自定义的一个方法,来根据你选择的加载模式选择不同的接口,三个网站接口只是模拟 public class ImageMode { public static final String SP...

iOS网络加载图片缓存与SDWebImage

介绍缓存处理的三种方式,其中最难,最麻烦,最占内存资源的还是图片缓存,最近做的项目有大量的图片处理,还是采用了SDWebImage来处理,但是发现之前封装好的代码报错了。研究发现,是我用了新版的SDWebImage,好多方法都变了。 现在把代码贴出来,供大家参考。尤其是新手,看完这篇博客,图片...
  • iaiai
  • iaiai
  • 2015-01-26 12:08
  • 506

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

多线程状态下加载网络图片,以及取消子线程加载图片,开启线程的两种方式

/**      NSThread           * 创建手动开启方式           *第三个参数 就是方法选择器选择方法的参数           */   ...

wamp5安装好了不能加载图片,false问题

进入php设置——php扩展——运行php_gd2。这样就OK了。 很多人以为只要把分号去掉就可以了。其实不行,在windows环境下,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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