使用文本iOS的UITextView动态宽度

时间:2016-11-08 05:02:33

标签: ios uitextview ios-autolayout

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

我现在如何拥有它:

enter image description here

约束:

enter image description here

5 个答案:

答案 0 :(得分:1)

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

目标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;
}

夫特

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;

答案 1 :(得分:1)

而不是UITextview创建一个自定义的UILable类,并设置像我在下面的图像中显示的约束。

enter image description here

答案 2 :(得分:1)

enter image description here

请记住这一步

1固定标签宽度,将其设置为大于或等于> 0

2采用尾随约束将其关系设置为大于或等于> 0

答案 3 :(得分:0)

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

答案 4 :(得分:0)

使用这个自定义TextView类“HPGrowingTextView”,它对我有用。

以下是链接: -

https://github.com/HansPinckaers/GrowingTextView