我正在使用界面构建器来创建一个xib。这个xib有一个包含uitextview的uiview。当uitextview中的文本发生变化时,两者都应该调整大小。约束看起来很像这样:
粉红色的UITextView推动蓝色超级视图。蓝色uiView的最小宽度为189像素,尾随约束为至少8像素。
在大多数情况下,这是有效的。非常长的文本部分会在预期的最大范围内调整两个视图的大小,如果只有一个或两个单词,则视图保持较小。但问题是,当你有一个短句时。
在这种情况下,视图只会扩展到大约189px,即使有空间可以扩展,文本也会移动到第二行。
当你只说几句话时,这就是它的样子:
这是一个完全展开的框:
我试图让尾随约束的优先级低于其他约束,我尝试在很多方面修改内容拥抱和压缩阻力属性但没有成功。
如何扩展视图以使其符合最少行数的文本内容?高度没有限制,仅限于宽度。
任何帮助将不胜感激!
答案 0 :(得分:0)
使用此方法获取textView的新大小
CGSize sz = [_textView.text sizeWithFont:_textView.font]
如果高度不能很好地工作,请从正常方法中获得刚刚获得的宽度,并在下一个方法中使用以获得所需的适当高度
- (CGFloat)textViewHeightForAttributedText:(NSAttributedString *)text andWidth:(CGFloat)width
{
UITextView *textView = [[UITextView alloc] init];
[textView performSelectorOnMainThread:@selector(setAttributedText:)
withObject:text
waitUntilDone:YES];
CGSize size = [textView sizeThatFits:CGSizeMake(width, FLT_MAX)];
return size.height;
}
答案 1 :(得分:0)
关键是将preferredMaxLayoutWidth设置为大(320px听起来不错。你的正确约束会限制它。)
您可以在代码中执行此操作
[self.label setPreferredMaxLayoutWidth:320];
或者从Interface Builder中按如下方式进行:
通过这种方式,您可以看到标签按预期展开:
答案 2 :(得分:-1)
您是否尝试过此帖中提供的解决方案?
Dynamic expand UITextView on ios 7
我相信你必须将你的UITextView设置为sizeToFit
[YourUITextView sizeToFit];