Swift、自动调整大小自定义 Table 查看单元格

Swift, Auto Resize Custom Table View Cells

在我的应用中,我有一个 table 视图,每个单元格中都有图像、标签和文本视图。我希望能够根据文本视图中的内容量自动调整单元格的大小。 (文本视图是最下方的文本。)

到目前为止,我已经添加了正确的约束;文本视图的前导、尾随、顶部和底部,并已禁用滚动和编辑。

在我的 tableViewController.swift 文件中,我写了这段代码:

override func viewWillAppear(_ animated: Bool) { tableView.estimatedRowHeight = 100 tableView.rowHeight = UITableViewAutomaticDimension }

但是,这不起作用,因为当我向文本视图添加更多文本时,它就被切断了。

也许这与卡片有关,我在每个单元格中都有一个 UIView 作为卡片。

老实说我不知道​​我做错了什么

下面是我的应用程序的图片,如果有人能提供帮助,我们将不胜感激

确保内容模式设置为 UITextViewScale To Fill 确保 UITextView 和卡片 UIView

没有高度限制

尝试将估计高度添加到 viewDidLoad:

override func viewDidLoad() {
    tableView.estimatedRowHeight = 100
    tableView.rowHeight = UITableViewAutomaticDimension
}

可能是由于 UITextView 上方的 UIView 导致 AutoHeight 无法正常工作。尝试为 cellForRowAt 中的 UIView 调用 sizeToFitlayoutIfNeeded 方法:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Identifier", for: indexPath) as! CustomTableViewCell
    cell.vwCard.sizeToFit()
    cell.vwCard.layoutIfNeeded()
    return cell
}

您也可以尝试 sizeToFitlayoutIfNeeded 以及 UITextView

希望这有效.......

检查你的约束是否是这样的(根据你的图像):

imageView :设置为容器的顶部和行距,具有固定的高度和宽度值。

标签:您可以将其设置在图像的顶部和水平方向 space,同时固定高度和宽度。

textView:前导到图像,顶部 space 到标签,尾部和底部到容器。

并继续使用

tableView.estimatedRowHeight = 100
        tableView.rowHeight = UITableViewAutomaticDimension

在你的 viewWillAppear()

将 textView 的底部设置为白色 UIView 的底部,并确保白色 UIView 具有左、右、上和下约束:)

Same type of example is explained here programmatically....

更新 swift 4.2

使用:

UITableView.automaticDimension

而不是:

UITableViewAutomaticDimension