【问题标题】:Change UITableViewCell Height after creation创建后更改 UITableViewCell 高度
【发布时间】:2013-06-15 17:25:24
【问题描述】:

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

imageviewheight = 292/imagewidth*imageheight

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

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

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

我能想到的唯一解决方案是保存 UIImage,然后重新加载单元格。然后,由于我已经有了图像,我可以根据图像相应地设置单元格高度。然而,这似乎是一个非常低效的解决方案。创建单元格后有什么方法可以调整单元格高度吗?我尝试更改单元格的框架,但没有任何作用。有没有办法在创建后更改单元格高度,还是重新加载唯一的方法?

【问题讨论】:

  • 我认为这会对您有所帮助click here。希望对您有所帮助。
  • 您必须在 CellforrowatindexPath 之前不惜一切代价设置单元格高度,我可以建议您,当您获取图像信息时,将该图像放入数组中,并使用该数组填充您的表格视图,然后在索引处的行高度根据数组中的索引计算图像高度,.. 希望对您有所帮助
  • 为什么不设置图片的固定高度和宽度?

标签: ios cocoa-touch uitableview autolayout


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    相关资源
    最近更新 更多