【发布时间】:2018-02-18 19:34:53
【问题描述】:
我正在尝试扩展我的 UITextView 以根据其内容更改框架。
当里面的文本变大时,textView 应该调整它的高度,当用户删除文本时,它会变小。
我尝试了很多答案,但没有奏效。
【问题讨论】:
标签: ios objective-c swift textview uitextview
我正在尝试扩展我的 UITextView 以根据其内容更改框架。
当里面的文本变大时,textView 应该调整它的高度,当用户删除文本时,它会变小。
我尝试了很多答案,但没有奏效。
【问题讨论】:
标签: ios objective-c swift textview uitextview
使用以下两行是该问题的最佳答案,它解决了我的问题:
expandingTextView.textContainer.heightTracksTextView = true
expandingTextView.isScrollEnabled = false
注意事项:expandingTextView: UITextView。textContainer: NSTextContainer是expandingTextView中文本的边界。heightTracksTextView: Bool如果为真,接收方将调整其高度基于扩展的TextView 高度。
为了使扩展工作,您需要通过以下方式禁用 textView 滚动:isScrollEnabled = false
【讨论】:
UITextView 添加到UIViewController 的view。我试过用自动布局定位它,而不用(只是通过设置它的框架)。在这两种情况下,将其isScrollEnabled 属性设置为false 不会使其高度在我键入时扩展。我错过了什么?
priority 设置为.defaultLow。
heightTracksTextView = true 引起的差异。我想它应该让文本容器在其文本视图的高度发生变化时调整其高度,但也许无论如何都会发生这种情况,或者文本容器的高度可能无关紧要?
在自动布局下,对 UITextView 使用 invalidateIntrinsicContentSize()
func viewDidLoad(){
textView.delegate = self;
textView.isScrollEnabled = false;
}
extension Chat:UITextViewDelegate {
func textViewDidChange(_ textView: UITextView) {
textView.invalidateIntrinsicContentSize();
}
}
【讨论】: