UITextView不更新其contentSize

13

我正在动态调整 UITextView 的高度以及嵌入的 UITableViewCell 的高度,当其内容发生变化时。但我也可以粘贴预定义的文本。

由于这种粘贴是通过编程实现的,问题在于,在将选定的文本添加到 UITextView 的文本并调用我的 UITableView 更新其单元格高度后,UITextView 还没有更新其 contentSize,而我需要用它来计算单元格的高度。

是否有一种方法可以在我通过编程向其添加文本后,强制 UITextView 更新其 contentSize


1
对于未来的观众,我相信这个问题的真正答案是 textView.sizeToFit()。我在 Swift 2.0 中使用它,只要你使用 AutoLayout,它就能完美地工作,就像 @dkaisers 请求的那样。 - kbpontius
2个回答

26

您可以使用sizeThatFits:方法来获取正确的大小。

CGFloat height = ceilf([textView sizeThatFits:textView.frame.size].height);

这是一个流行的开源组件,它利用它来实现基于textview内容的动态调整大小:

 https://github.com/HansPinckaers/GrowingTextView

4

以下是Swift版本的答案:

var newTextViewHeight = ceil(textView.sizeThatFits(textView.frame.size).height)
textView.frame.size.height = newTextViewHeight

如果你想更新UITextView的superview,这段代码也可能会有用。

textView.superview?.frame.size.height = textView.contentSize.height + 10

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接