我使用这个名为ReadMoreTextView的开源库来显示一堆文本。该库使我能够在显示文本的摘录和显示全长内容之间切换(按钮是我添加的普通UIButton,而不是库)。
这可以按预期工作。
当我必须显示较少量的文本时,我的问题就出现了。如果我添加一些不超过UITextView高度的内容,我想隐藏更多/更少的切换按钮。所以我想要获取全部内容高度,如果它只大于文本视图的高度,则显示切换按钮。
在上面的例子中,我提供了一些超出文本视图范围的段落。文本视图的高度显示为128.但内容高度也返回128.有一个名为boundingRectForCharacterRange
的库特定方法,它应该返回内容高度也返回错误的值(100)。
print("TEXTVIEW HEIGHT: \(textView.bounds.height)") // 128
print("CONTENT HEIGHT: \(textView.contentSize.height)") // 128
let rect = textView.layoutManager.boundingRectForCharacterRange(range: NSRange(location: 0, length: textView.text.count), inTextContainer: textView.textContainer)
print("TEXT HEIGHT: \(rect.height)") // 100
我在图书馆的Github页面上打开了issue但是店主要求在这里提问。
为什么内容高度返回错误值?
顺便说一句,这是我在上面的例子中使用的project。
答案 0 :(得分:4)
您可以使用以下方法获取内容大小:
let contentSize = self.textView.sizeThatFits(self.textView.bounds.size)
然后相应地更新textview框架:
self.textView.frame = CGRect(width: contentSize.width, height: contentSize.height)