根据其内容展开UITextView

时间:2017-09-10 12:41:36

标签: ios objective-c swift textview uitextview

我试图扩展我的UITextView以根据其内容更改框架。

当textView内部的文本变大时,textView应该调整其高度,当用户删除文本时,textView应该更小。

我尝试了很多答案,但它没有奏效。

2 个答案:

答案 0 :(得分:5)

使用以下两行是问题的最佳答案,它解决了我的问题:

expandingTextView.textContainer.heightTracksTextView = true
expandingTextView.isScrollEnabled = false

备注:
expandingTextView: UITextView
textContainer: NSTextContainer是expandingTextView内文本的边界 heightTracksTextView: Bool如果为true,接收器将根据expandingTextView高度调整其高度。

要使扩展工作,您需要通过以下方式禁用textView滚动:
isScrollEnabled = false

答案 1 :(得分:0)

在自动布局下,对UITextView使用invalidateIntrinsicContentSize()

func viewDidLoad(){
    textView.delegate = self;
    textView.isScrollEnabled = false;
}

extension Chat:UITextViewDelegate {
  func textViewDidChange(_ textView: UITextView) {
    textView.invalidateIntrinsicContentSize();
  }
}