如何修改 heightForRowAtIndexPath 以便它调整其中的 textview 的高度,同时在 textview 为空时保持最小高度?

How can I modify the heightForRowAtIndexPath so that it adjust height to the textview in it,but also keep the minimum height when textview is empty?

我有一个 tableView,里面有静态单元格。一个单元格包含一张地图,UITextView 和其他控件:

此文本视图具有以下限制:

到目前为止,我将 heightForRowAtIndexPath 设置为该单元格的静态值:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
{
    if indexPath.row == 0 {
        return 311;
    }
}

但是当文本变长时,textview - 而不是增长 - 包含里面的文本,用户必须滚动它。 基本上它的高度总是311。我想改变它,让整个单元格适应 textView 的内容。

我尝试将 return 311 更改为 return UITableViewAutomaticDimension,但是当没有文本时,单元格会缩小并且右侧的控件不可见。

所以我的问题是 - 如何根据里面的文本为单元格设置动态高度,同时保持最小高度为 311?

我不完全理解你的问题,但根据你所说的,这可能有效:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    if UITableViewAutomaticDimension > 311 {
            return UITableViewAutomaticDimension
    }
    else {
       return 311
   }
}

我只是检查单元格是否应该大于最小值 311,然后 return 最小值或更大的值

给文本视图添加一个高度约束>=最小值(单元格为311时的高度,然后将单元格高度设置为自动。

如果您只是简单地显示文本而不以任何方式对其进行编辑。您应该尝试使用 UILabel,如果正确添加约束,UITableViewAutomaticDeminsions 将按预期工作。

你可以做的是给textView添加一个高度约束,然后根据你获取的字符串的大小增加它的大小。当然,您也需要调用 layoutIfNeeded! UITableViewAutomaticDimensions 应该负责其余的工作。