带有文本的 UITextView 动态宽度 iOS

UITextView Dynamic Width With Text iOS

需要一些帮助。我正在构建一个聊天应用程序并希望聊天 textView 随文本的宽度进行调整,因此如果消息很短,textView 会相应地进行调整。我正在使用自动布局,但似乎无法弄清楚如何根据 textView 的文本行长度动态调整约束的常量。谢谢

我现在怎么样:

约束条件:

您可以删除尾随 space 到超级视图以从文本长度获取宽度 你能试试吗?

以编程方式,您可以这样做,

Objective C

- (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

let fixedWidth = textView.frame.size.width
textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude))
let newSize = textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude))
var newFrame = textView.frame
newFrame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height)
textView.frame = newFrame;

代替 UITextview 创建自定义 UILabel class 并设置约束,如下图所示。

使用这个自定义 TextView class "HPGrowingTextView",它对我有用。

下面是Link:-

https://github.com/HansPinckaers/GrowingTextView

请记住这个步骤

1 修复标签宽度设置为大于等于 >0

2 取其关系大于或等于 >0

的尾随约束集