我想要扩展我的UITextView,根据其内容更改框架。
当文本变得更多时,textView应该调整其高度,当用户删除文本时则缩小。
我尝试了许多答案,但都没有成功。
我想要扩展我的UITextView,根据其内容更改框架。
当文本变得更多时,textView应该调整其高度,当用户删除文本时则缩小。
我尝试了许多答案,但都没有成功。
使用下面两行代码是最佳答案,它解决了我的问题:
expandingTextView.textContainer.heightTracksTextView = true
expandingTextView.isScrollEnabled = false
注意:
expandingTextView: UITextView
是可扩展的文本视图。
textContainer: NSTextContainer
是扩展文本视图内部文本的边界。
heightTracksTextView: Bool
如果为true,接收者将根据expandingTextView的高度调整其高度。
为了使扩展工作,您需要通过以下方法禁用textView滚动:
isScrollEnabled = false
func viewDidLoad(){
textView.delegate = self;
textView.isScrollEnabled = false;
}
extension Chat:UITextViewDelegate {
func textViewDidChange(_ textView: UITextView) {
textView.invalidateIntrinsicContentSize();
}
}
UITextView
添加到UIViewController
的view
中。我尝试使用自动布局和不使用(仅通过设置其框架)来定位它。在两种情况下,将其isScrollEnabled
属性设置为false
并不能使其高度随着我的输入而扩展。我错过了什么? - ma11hew28.defaultLow
。 - ma11hew28heightTracksTextView = true
会有什么不同。我猜它应该是在文本视图的高度改变时使文本容器调整其高度,但也许这已经发生了,或者文本容器的高度是无关紧要的? - ma11hew28