添加换行符后 UITextView 高度变为可滚动
Posted
技术标签:
【中文标题】添加换行符后 UITextView 高度变为可滚动【英文标题】:UITextView height changes to scrollable after adding Line Break 【发布时间】:2019-06-15 12:00:59 【问题描述】:我正在尝试设置 UITextview 的高度,并且在我尝试格式化文本之前一切正常。
一个例子可能是“/n”或使用 Swift Multiline String Literals 的换行符。
之后,Textview 变得可滚动,具有某种最大高度值。
格式化文本会破坏“self.overViewTxt.contentSize.height”吗?
谢谢。
@IBOutlet weak var overViewTxt: UITextView!
@IBOutlet weak var overviewTxtHC: NSLayoutConstraint!
overViewTxt.text = "Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, \n sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
overviewTxtHC.constant = self.overViewTxt.contentSize.height
或
overViewTxt.text = """
Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat\n non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
"""
【问题讨论】:
【参考方案1】:UITextView
具有自动计算高度的独特属性。您不需要采用 IBOutlet
约束或不提供任何修复 HEIGHT 约束,而不需要禁用它的滚动属性,然后分配任何文本,它将自动变成它的大小。
注意:确保提供适当的约束,即顶部、底部、前导和尾随。
【讨论】:
该死的,这太简单了。显然是我想多了。谢谢!【参考方案2】:尝试更新框架而不是使用约束:
overViewTxt.text = "Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, \n sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
let overviewTxtHCSize = overviewTxtHC.intrinsicContentSize
overviewTxtHC.bounds.size = overviewTxtHCSize
【讨论】:
以上是关于添加换行符后 UITextView 高度变为可滚动的主要内容,如果未能解决你的问题,请参考以下文章
UITextView 文字在高度达到 8192.0 后变得不可见
iOS UITextView 高度随文字自己主动添加,并尾随键盘移动