如何调整UITextView的内容大小?

如何调整UITextView的内容大小?

有什么好方法来调整UITextView以符合它的内容?比如说我有一个UITextView其中包含一行文本:

"Hello world"

然后,我添加另一行文本:

"Goodbye world"

可可有什么好办法rect它将容纳文本视图中的所有行,这样我就可以相应地调整父视图了吗?

作为另一个例子,查看Calendar应用程序中事件的Notes字段-注意单元格(以及UITextView它包含)展开,以保存注释字符串中的所有文本行。


富国沪深
浏览 812回答 2
2回答

犯罪嫌疑人X

这适用于IOS 6.1和IOS 7:- (void)textViewDidChange:(UITextView *)textView{     CGFloat fixedWidth = textView.frame.size.width;     CGSize newSize = [textView sizeThatFits:CGSizeMake(fixedWidth, MAXFLOAT)];     CGRect newFrame = textView.frame;     newFrame.size = CGSizeMake(fmaxf(newSize.width, fixedWidth), newSize.height);     textView.frame = newFrame;}或在SWIFT中(在IOS 11中与SWIFT4.1一起工作)let fixedWidth = textView.frame.size.width let newSize = textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude))textView.frame. size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height)如果您希望支持IOS 6.1,那么还应该:textview.scrollEnabled = NO;

慕虎7371278

这不再适用于iOS 7或更高版本。实际上,有一种非常简单的方法来调整UITextView内容的正确高度。可以使用UITextView contentSize.CGRect frame = _textView.frame;frame.size.height = _textView.contentSize.height;_textView.frame = frame;有一点要注意的是,正确的contentSize只提供后这个UITextView已添加到视图中的addSubview..在此之前,它等于frame.size如果自动布局启动,这将无法工作。对于自动布局,一般方法是使用sizeThatFits方法并更新constant值在高度约束上。CGSize sizeThatShouldFitTheContent = [_textView sizeThatFits:_textView.frame.size]; heightConstraint.constant = sizeThatShouldFitTheContent.height;heightConstraint是一个布局约束,您通常通过IBOutlet将属性链接到故事板中创建的高度约束来设置该约束。为了补充这个惊人的答案,2014年,如果你:[self.textView sizeToFit];与iPhone 6+只有:对于6+(而不是5s或6),它确实在UITextView中添加了“多一个空行”。“RL解决方案”完美地解决了这一问题:CGRect _f = self.mainPostText.frame;_f.size.height = self.mainPostText.contentSize.height;self.mainPostText.frame = _f;它解决了6+上的“额外行”问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS