UItextview没有按预期扩展约束

时间:2014-04-22 22:46:16

标签: ios7 interface-builder uitextview xib

我正在使用界面构建器来创建一个xib。这个xib有一个包含uitextview的uiview。当uitextview中的文本发生变化时,两者都应该调整大小。约束看起来很像这样:

enter image description here

粉红色的UITextView推动蓝色超级视图。蓝色uiView的最小宽度为189像素,尾随约束为至少8像素。

在大多数情况下,这是有效的。非常长的文本部分会在预期的最大范围内调整两个视图的大小,如果只有一个或两个单词,则视图保持较小。但问题是,当你有一个短句时。

在这种情况下,视图只会扩展到大约189px,即使有空间可以扩展,文本也会移动到第二行。

当你只说几句话时,这就是它的样子: enter image description here

这是一个完全展开的框:

enter image description here

我试图让尾随约束的优先级低于其他约束,我尝试在很多方面修改内容拥抱和压缩阻力属性但没有成功。

如何扩展视图以使其符合最少行数的文本内容?高度没有限制,仅限于宽度。

任何帮助将不胜感激!

3 个答案:

答案 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中按如下方式进行:

Setting properties from Interface Builder

通过这种方式,您可以看到标签按预期展开:

Example

答案 2 :(得分:-1)

您是否尝试过此帖中提供的解决方案?

Dynamic expand UITextView on ios 7

我相信你必须将你的UITextView设置为sizeToFit

[YourUITextView sizeToFit];