获取 UITextView 的内容高度
Get the content height of a UITextView
我使用这个名为 ReadMoreTextView 的开源库来显示一堆文本。该库使我能够在显示文本摘录和显示完整长度内容之间切换(该按钮是我添加的普通 UIButton,而不是库)。
这按预期工作。
当我必须显示较少量的文本时,我的问题就出现了。如果我添加一些不超过 UITextView 高度的内容,我想隐藏 more/less 切换按钮。所以我考虑采用完整的内容高度,如果它大于文本视图的高度,则显示切换按钮。
在上面的示例中,我添加了几个超出文本视图边界的长段落。文本视图的高度为 128。但内容高度也为 returns 128。有一个库特定方法称为 boundingRectForCharacterRange
,它应该 return 内容高度也为 return 是一个错误的值 (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,但馆主要求在这里询问。
为什么内容高度 return 值错误?
顺便说一句,这是我在上面的例子中使用的project。
您可以简单地使用以下方法获取内容大小:
let contentSize = self.textView.sizeThatFits(self.textView.bounds.size)
然后相应地更新textview框架:
self.textView.frame = CGRect(width: contentSize.width, height: contentSize.height)
我使用这个名为 ReadMoreTextView 的开源库来显示一堆文本。该库使我能够在显示文本摘录和显示完整长度内容之间切换(该按钮是我添加的普通 UIButton,而不是库)。
这按预期工作。
当我必须显示较少量的文本时,我的问题就出现了。如果我添加一些不超过 UITextView 高度的内容,我想隐藏 more/less 切换按钮。所以我考虑采用完整的内容高度,如果它大于文本视图的高度,则显示切换按钮。
在上面的示例中,我添加了几个超出文本视图边界的长段落。文本视图的高度为 128。但内容高度也为 returns 128。有一个库特定方法称为 boundingRectForCharacterRange
,它应该 return 内容高度也为 return 是一个错误的值 (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,但馆主要求在这里询问。
为什么内容高度 return 值错误?
顺便说一句,这是我在上面的例子中使用的project。
您可以简单地使用以下方法获取内容大小:
let contentSize = self.textView.sizeThatFits(self.textView.bounds.size)
然后相应地更新textview框架:
self.textView.frame = CGRect(width: contentSize.width, height: contentSize.height)