繁体   English   中英

在tableViewCell内部动态更改UIImageView的宽度和高度

[英]change width and height of UIImageView dynamically inside tableViewCell

我有自定义的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 ];

    }

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM