我可以知道为什么我在滚动时桌面单元格会变懒吗?

时间:2016-07-13 06:09:32

标签: ios objective-c uitableview uiimage sdwebimage

if (cell.tag == indexPath.row) {
    [cell.imageView sd_setImageWithURL:[NSURL URLWithString:[enclosureUrlArray objectAtIndex:indexPath.row]]
                           placeholderImage:[UIImage imageNamed:@"placeholder"] options:indexPath.row == 0 ? SDWebImageRefreshCached : 0];
                    CGSize itemSize = CGSizeMake(50, 50);
                    UIGraphicsBeginImageContext(itemSize);
                    CGRect imageRect = CGRectMake(0.0, 0.0, itemSize.width, itemSize.height);
                    [cell.imageView.layer setMasksToBounds:YES];
                    [cell.imageView.layer setCornerRadius:2.5f];
                    [cell.imageView.image drawInRect:imageRect];
                    cell.imageView.image = UIGraphicsGetImageFromCurrentImageContext();
                    UIGraphicsEndImageContext();
                    cell.imageView.autoresizingMask = UIViewAutoresizingNone;
       }

    return cell;

我只使用了SDWebImage。当我滚动我的UITableView单元格被卡住时 - 它不能顺利滚动。我正在从Web服务中检索图像。你能告诉我为什么会这样吗?

2 个答案:

答案 0 :(得分:0)

在您的代码中,滚动表格视图时会遇到问题,因为在下载图像后,您正在更改图像形状,例如应用Bounds,Radius。因此,图像形状每次都在变化。最好不要使用任何第三方库,而是使用苹果API。

以下代码可能有所帮助:

String wktString = "LINESTRING (0 0, 0 10)";
WKTReader reader = new WKTReader();
Geometry geom = reader.read(wktString);

答案 1 :(得分:0)

如果您希望表格视图能够平滑滚动,我建议您观看WWDC 2012的会话211,构建并发用户界面并在那里应用这些概念。这包含其内容被独立查询和呈现的单元格。

基本概念如下:
1.在tableView:cellForRowAtIndexPath中,实例化一个单元格 2.在相同的方法中,创建用于检索数据以填充单元格的操作并将其存储到字典中。对单元格的引用传递给操作。该操作有一个完成处理程序,用于填充单元格并从字典中删除操作 3.在从方法返回单元格之前,将操作添加到操作队列中 4.在tableView:didEndDisplayingCell:forRowAtIndexPath中,已取消已移出屏幕的单元格的操作将从字典中删除。