小编典典

如何根据内容调整 UITextView 的大小?

all

有没有一种好方法可以调整 a 的大小UITextView以符合其内容?比如说我有一个UITextView包含一行文本的:

"Hello world"

然后我添加另一行文本:

"Goodbye world"

在 Cocoa Touch 中是否有一种好方法可以让rect文本视图中的所有行都保持不变,以便我可以相应地调整父视图?

作为另一个示例,查看日历应用程序中事件的便笺字段 - 请注意单元格(及其UITextView包含的单元格)如何扩展以容纳便笺字符串中的所有文本行。


阅读 121

收藏
2022-03-09

共1个答案

小编典典

这适用于 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 中的 Swift 4.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;
2022-03-09