0

我有自定义 UITableViewCell 由 xib 文件制成。我在那个单元格中有 UIImageView ,我设置了固定的宽度和高度以及 40x40 并设置为隐藏

然后在 cellForRowAtIndexPath 数据源委托中。我检查该单元格的数据源是否包含 image 的 URL。如果有,我将 ImageView 设置为出现。并使用 SDWebImage 下载图像并在下载完成时调整完成块中 imageView.frame 的大小

实际上,乍一看它工作正常。我得到了相同大小的 ImageView 和下载的图像。但是,如果我向下滚动然后再次向上滚动到上部单元格。它只是重新出现 40x40 尺寸增益。任何人都可以帮忙吗?

这是代码,以防您好奇。我想代码没有问题,问题是我如何在 .xib 文件中设置 UIImageView 但我不知道如何解决。

//    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

if([item postImageURLString]){

        void (^completionBlock)(UIImage *image, NSError *error, SDImageCacheType cacheType) = ^(UIImage *image, NSError *error, SDImageCacheType cacheType) {

            CGRect imageFrame = CGRectMake(cell.frame.size.width/3,cell.frame.size.height -5 -image.size.height, image.size.width, image.size.height);

            [cell.postImageView setFrame:imageFrame];


        };

            [cell.postImageView setHidden:NO];


        [cell.postImageView setImageWithURL:URL completed:completionBlock ];

    }
4

1 回答 1

0

我怀疑这与 tableview 重用具有 40x40 图像视图的单元格有关。如果图像已经缓存,看起来SDWebImage 将不会运行您的完成块,因此如果 tableview 重绘单元格并且您的图像已经缓存,它永远不会执行调整大小的代码。您需要将代码添加到您的 cellForRowAtIndexPath 方法,以检查图像是否已被缓存,以及是否已调整图像视图的大小。

于 2013-07-17T19:36:22.150 回答