根据内容展开 UITextView
Expand UITextView based on its content
我正在尝试扩展我的 UITextView 以根据其内容更改框架。
textView 应在其中的文本变大时调整其高度,并在用户删除文本时调整其高度。
我尝试了很多答案,但都没有用。
使用以下两行是问题的最佳答案,它解决了我的问题:
expandingTextView.textContainer.heightTracksTextView = true
expandingTextView.isScrollEnabled = false
备注:
expandingTextView: UITextView
.
textContainer: NSTextContainer
是 expandingTextView 中文本的边界。
heightTracksTextView: Bool
如果为true,接收者将根据expandingTextView 的高度调整其高度。
为了展开工作,您需要通过以下方式禁用 textView 滚动:
isScrollEnabled = false
在自动布局下,对 UITextView 使用 invalidateIntrinsicContentSize()
func viewDidLoad(){
textView.delegate = self;
textView.isScrollEnabled = false;
}
extension Chat:UITextViewDelegate {
func textViewDidChange(_ textView: UITextView) {
textView.invalidateIntrinsicContentSize();
}
}
我正在尝试扩展我的 UITextView 以根据其内容更改框架。
textView 应在其中的文本变大时调整其高度,并在用户删除文本时调整其高度。
我尝试了很多答案,但都没有用。
使用以下两行是问题的最佳答案,它解决了我的问题:
expandingTextView.textContainer.heightTracksTextView = true
expandingTextView.isScrollEnabled = false
备注:
expandingTextView: UITextView
.
textContainer: NSTextContainer
是 expandingTextView 中文本的边界。
heightTracksTextView: Bool
如果为true,接收者将根据expandingTextView 的高度调整其高度。
为了展开工作,您需要通过以下方式禁用 textView 滚动:
isScrollEnabled = false
在自动布局下,对 UITextView 使用 invalidateIntrinsicContentSize()
func viewDidLoad(){
textView.delegate = self;
textView.isScrollEnabled = false;
}
extension Chat:UITextViewDelegate {
func textViewDidChange(_ textView: UITextView) {
textView.invalidateIntrinsicContentSize();
}
}