UITextView 内容在增加高度时改变位置
Posted
技术标签:
【中文标题】UITextView 内容在增加高度时改变位置【英文标题】:UITextView content changing position while increasing height 【发布时间】:2014-10-29 07:07:11 【问题描述】:我正在尝试使用textViewDidChange
委托调用根据其内容的大小更改UITextView
的高度。但是在输入第一行时文本会向上推一点,并在输入下一行时更正到旧位置,对于添加的每一行交替重复。
func textViewDidChange(textView: UITextView!)
var computedHeightDifference = textView.contentSize.height - textView.frame.size.height
if(computedHeightDifference != 0)
textView.frame.size.height = textView.contentSize.height
我尝试使用textView.sizeToFit()
而不是完整块,但添加每一行时文本视图会闪烁(在电话应用程序中添加新联系人时,可以在备注字段中注意到相同的行为。
我已将完整代码上传至GitHub
【问题讨论】:
【参考方案1】:您设置的高度不够大。您需要考虑文本容器的插图。
这样做:
func textViewDidChange(textView: UITextView!)
var computedHeightDifference = textView.contentSize.height - (textView.frame.size.height + textView.textContainerInset.top + textView.textContainerInset.bottom)
if(computedHeightDifference != 0)
textView.frame.size.height = textView.contentSize.height + textView.textContainerInset.top + textView.textContainerInset.bottom
【讨论】:
这有帮助。谢谢!我只看ContentInset
没注意到TextContainerInset
。以上是关于UITextView 内容在增加高度时改变位置的主要内容,如果未能解决你的问题,请参考以下文章
SWIFT - 改变 UITextView 的高度,xcode 6 GM
iOS Swift - 动态增加 UITextView 和父 UIView 的高度