在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开发-解决页面卡顿小技巧(很常用)

1.为什么出现页面卡顿? 在开发中我们常常会遇到布局比较复杂的cell,在滑动的时候会导致界面不流畅,出现卡顿的现象,这是由于CPU计算和GPU渲染,之间未及时交换数据丢失帧导致的结果。 2.常...

SDWebImage 加载网络图片不能显示

iOS9让所有的HTTP默认使用了HTTPS,原来的HTTP协议传输都改成TLS1.2协议进行传输。直接造成的情况就是App发请求的时候弹出网络无法连接。解决办法就是在项目的info.plist 文件...

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

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

UI一揽子计划 21 (UICollectionView、SDWebImage第三方类库加载图片的使用、集合视图的布局UICollectionViewFlowLayout 、自定义Cell、布局协议

Pro : SDWebImage第三方类库加载图片的使用: 1.在MRC 环境下 使用ARC 的类库:          -fobjc-arc   (Build Phases  ...

【iOS】网络加载图片缓存与SDWebImage

看到一遍不错关于加载图片缓存的文档:原文地址 http://blog.csdn.net/xn4545945   -----------------------------------------...

fresco加载图片+retrofit网络请求+rxjava2+xrecyclerview下拉刷新上拉加载

compile 'com.jakewharton:butterknife:8.8.1' annotationProcessor 'com.jakewharton:butterknife-compile...

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

activity:

SDWebImage网络加载图片缓存

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

异步加载图片sdwebimage

  • 2014年12月03日 14:38
  • 90KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在tableviewcell 加载图片,解决第三方SDWebImage网络不是很通畅的状态下往下拉不能加载图片
举报原因:
原因补充:

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