首页 文章

创建后更改UITableViewCell高度

提问于
浏览
1

我正在开发一个使用tableviews的app,它显示从webservice获取的内容 . 在某些单元格中,我可能需要显示尺寸未知的图像 . 为此,我在固定宽度(292pts)的单元格内部有一个UIImageView . 然后我相应地调整imageview高度,就像这样 .

imageviewheight = 292 / imagewidth * imageheight

例如,如果我的图像是730 * 1250,我将高度设置为500以保持纵横比并显示完整图像 .

但是,当我需要设置单元格高度时,这可能是一个问题 . 由于图像是从互联网上下载的,因此当我需要创建单元格时,图像可能还没有完成下载 . 因此,在图像下载之前我无法确定单元格高度,并且我无法让我的UI等待,因此我显示了占位符图像,并且单元格高度基于其高度 .

下载图像后,我需要在图像视图中显示它 . 如果高度与占位符图像的高度匹配,那就没问题了 . 否则,我需要调整imageview高度以进行补偿,并进而改变单元格高度 . 但问题是,一旦创建了单元格,我无法更改高度 .

我能想到的唯一解决方案是保存UIImage并重新加载单元格 . 然后,因为我已经有图像,我可以根据图像相应地设置单元格高度 . 然而,这似乎是一个非常低效的解决方案 . 有没有办法在创建后调整单元格高度?我尝试改变单元格的框架,但这没有做任何事情 . 有没有办法在创建后更改单元格高度,或者是重新加载唯一的方法?

1 回答

  • 1

    加载图像后,请确保在方法 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 中从 UITableViewDelegate 返回行的正确新高度 . 您可能需要调用 - (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation 来强制它重新检查该行高度的值 .

相关问题