我试图扩展我的UITextView以根据其内容更改框架。
当textView内部的文本变大时,textView应该调整其高度,当用户删除文本时,textView应该更小。
我尝试了很多答案,但它没有奏效。
答案 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();
}
}