ios - 创建后更改 UITableViewCell 高度

标签 ios cocoa-touch uitableview autolayout

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

imageviewheight = 292/imagewidth*imageheight

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

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

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

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

最佳答案

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

关于ios - 创建后更改 UITableViewCell 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17186807/

相关文章:

ios - iOS 应用程序在后台录制时音频中断

ios - 什么时候执行App Delegate的方法willTerminate?

iphone - 进入编辑/重新排序模式时 UITableViewCell 自定义绘图和动画

iphone - 导航到 SplitViewController

ios - NSFetchedResultsController - 只显示保存在数据库中的结果?

iOS:在用户向下拖动时拉伸(stretch)/调整 UITableView 标题?

ios - UISplitViewController 的 preferredDisplayMode : incorrect behavior

ios - 如何为 QBChat 设置 currentUser()?

ios - 如何使用 Swift 中的 editActionsForRowAtIndexPath 检测单元格是否被滑动到正常状态?

objective-c - 具有不同尺寸图像的 UITableViewCell