UITextView动态宽度与文本iOS

问题描述:

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

我怎么会有现在:

enter image description here

约束:

enter image description here

+0

你使用的是UITableViewAutomaticDimension –

+0

是的,但只是似乎照顾了单元格的高度 – dcotter

enter image description here

PLZ记住这个步骤

1固定标签宽度设置它的相对于大于或等于> 0

2采取拖尾约束设置它的关系大于或等于> 0

+0

谢谢balkaran。使用尾随约束设置为> = 0的标签结束了诀窍 – dcotter

+0

欢迎@dcotter :) –

可以删除尾随的空间来上海华摆脱文本lenght 宽度,你可以试试吗?

+0

如果我删除尾随空间超级查看textview展开超过视图时,文本很长。 – dcotter

编程,你可以不喜欢,

目标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; 
+0

这似乎没有工作。也许我的约束覆盖了它? – dcotter

+0

删除禁忌然后尝试此操作。 – User511

+0

感谢艾莎的帮助。我删除它,它只是使它扩大超出其看法。但是我把它转换成了一个标签,并在其他一些答案的帮助下让它起作用。 – dcotter

而不是UITextView中创建一个自定义UILable类并将约束像我显示follwing图像。

enter image description here

+0

谢谢chetu。你引导我走向正确的道路。使用标签似乎是正确的选择。 – dcotter

使用这个自定义的TextView类 “HPGrowingTextView”,这对我的工作。

下面是链接: -

https://github.com/HansPinckaers/GrowingTextView