我怎样才能修改heightForRowAtIndexPath,使其调整高度的TextView中,但也保持最小的高度,当textview为空?

我有一个静态单元格内的tableView。 一个单元格包含一个映射, UITextView和其他控件:

在这里输入图像说明

这个textview有以下限制:

在这里输入图像说明

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

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

但是当文本更长时,textview(而不是增长)包含里面的文本,用户必须滚动它。 基本上它总是311高。 我想改变它,以便整个单元格调整到textView内容。

我试图改变return 311 return UITableViewAutomaticDimension ,但是,当没有文本时,单元格缩小,右侧的控件不可见。

所以我的问题是 – 如何根据里面的文字设置单元格的dynamic高度,还要保持311的最小高度?

如果您只是显示文本,而不是以任何方式进行编辑。 你应该尝试使用UILabel,UITableViewAutomaticDeminsions将按照预期的那样工作,只要正确添加了约束。

你可以做的是给textView添加一个高度约束,然后根据你获得的string的大小增加它的大小。 当然你也需要调用layoutIfNeeded! UITableViewAutomaticDimensions应该照顾其余的。

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

我不完全理解你的问题,但根据你所说的也许这个作品:

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

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