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

  

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

相关文章推荐

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

/**      NSThread           * 创建手动开启方式         &...

上拉下拉刷新(2)网络加载图片

activity: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="...

SDWebImage网络加载图片缓存

加载网络图片可以说是网络应用中必备的。如果单纯的去下载图片,而不去做多线程、缓存等技术去优化,加载图片时的效果与用户体验就会很差。 一、自己实现加载图片的方法 tips: *...

异步加载图片sdwebimage

  • 2014-12-03 14:38
  • 90KB
  • 下载

SDWebImage 加载图片原理

目前标注的类 通过标注的类,看懂应该没问题了。 SDWebImage是一个图片缓存的框架。相较于AFNetworking集成的UIImageView+AFNetworking.h,对于图片的缓...

SDWebImage异步加载图片及缓存的管理与清理

1、在项目的开发过程中,我们经常会用到异步加载图片的功能,先从网络上异步下载图片,然后通过UIImageView显示在屏幕上。这是一个经常使用的功能,基本上所有的联网应用程序都要用到的功能,现在Git...
  • g1jun
  • g1jun
  • 2014-05-29 17:54
  • 5386

异步加载图片的库SDWebImage

转自:https://github.com/rs/SDWebImage How To Use It API documentation is available at http...

SDWebImage扩展二次加载图片

随着网络安全的意识加重,相信很多同学都遇到过图片二次加载的需求,即第一次请求获得图片的URL,第二次请求获得图片。在iOS中图片的加载库很多,而SDWebImage绝对是其中的翘楚,也是广大iOSer...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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