使用SDWebImage时表视图滚动滞后

阿德里安

我正在以表格形式从Internet加载一些图像cellForRowAtIndexPath这是我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *MyIdentifier = @"ArticleCell";
    ArticleCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    Article *article = [parser items][indexPath.row];

    cell.title.text = article.title;
    cell.newsDescription.text = article.description;
    [cell.image setImageWithURL:[NSURL URLWithString:article.image]];

    return cell;
}

我的问题是,即使我使用SDWebImage,当我向下滚动时,我的应用程序仍会滞后。这是来自的一些屏幕截图Instruments

在此处输入图片说明

在此处输入图片说明

花花公子

即使图像的下载是在后台线程中执行的,看起来图像数据的工作仍在主线程中完成,因此它阻塞了您的应用程序。您可以尝试SDWebImage提供的异步图像下载器。

[SDWebImageDownloader.sharedDownloader downloadImageWithURL:imageURL
                                                    options:0
                                                   progress:^(NSUInteger receivedSize, long long expectedSize)
                                                   {
                                                       // progression tracking code
                                                   }
                                                   completed:^(UIImage *image, NSData *data, NSError *error, BOOL finished)
                                                   {
                                                       if (image && finished)
                                                       {
                                                           // do something with image
                                                       }
                                                   }
];

在您的方法中,它应类似于:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *MyIdentifier = @"ArticleCell";
    ArticleCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    Article *article = [parser items][indexPath.row];

    cell.title.text = article.title;
    cell.tag = indexPath.row;
    cell.newsDescription.text = article.description;
    [SDWebImageDownloader.sharedDownloader downloadImageWithURL:imageURL
                                                        options:0
                                                       progress:nil
                                                      completed:^(UIImage *image, NSData *data, NSError *error, BOOL finished)
     {
         if (cell.tag == indexPath.row && image && finished)
         {
            dispatch_async(dispatch_get_main_queue(), ^(){
               cell.image = image;
            });

         }
     }];

    return cell;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用SDWebImage时表视图滚动滞后

来自分类Dev

滚动时的Xcode表视图滞后

来自分类Dev

UICollection使用SDWebImage查看滚动滞后

来自分类Dev

使用 UIImage 滚动时表格视图单元格滞后

来自分类Dev

滚动时UITableView滞后

来自分类Dev

滚动时的UITableView滞后

来自分类Dev

滚动TListBox时滞后

来自分类Dev

UITableView滚动时滞后

来自分类Dev

滚动recyclerview时滞后

来自分类Dev

滚动时 TableView 滞后

来自分类Dev

使用滚动视图时缩放视图

来自分类Dev

滚动时表视图返回错误的值

来自分类Dev

当滚动表视图内容改变时

来自分类Dev

滞后单个滚动视图中的多个图像

来自分类Dev

滞后单个滚动视图中的多个图像

来自分类Dev

SDWebImage + UITableViewCell,滚动时图像错误?

来自分类Dev

SDWebImage + UITableViewCell,滚动时图像错误?

来自分类Dev

访问数组会使UITableView在滚动时滞后

来自分类Dev

用户滚动时,UITableView会滞后

来自分类Dev

访问数组会使UITableView在滚动时滞后

来自分类Dev

滚动时具有 HorizontalScrollview 的 Scrollview 滞后

来自分类Dev

手动滚动到包含许多子视图的页面时,带有UIPageViewControllerTransitionStyleScroll的UIPageViewController会滞后

来自分类Dev

滚动时XCode Swift Timer在表视图中重新加载

来自分类Dev

滚动时不会重新加载表视图单元格

来自分类Dev

弹出窗口打开时禁止在表视图中滚动

来自分类Dev

动态表视图+滚动视图

来自分类Dev

滚动视图内的表视图

来自分类Dev

使用 FirebaseStorageUI + SDWebImage 时出错

来自分类Dev

显示图像时滞后网格视图