Ios7 UItextview未按预期使用约束展开
我正在使用interface builder创建xib。此xib具有包含uitextview的uiview。当uitextview中的文本发生变化时,这两个视图都应该调整大小。约束看起来很像这样: 粉红色的UITextView推送蓝色的superview。蓝色uiView的最小宽度为189 px,尾部约束至少为8px 这在很大程度上是可行的。非常长的文本部分会根据预期最大程度地调整两个视图的大小,如果只有一个或两个单词,则视图会保持较小。然而,问题是当你有一个简短的句子 在本例中,视图仅扩展到约189px,文本将移动到第二行,即使有扩展空间 下面是当你只说几句话时的情景: 这是一个完全展开的框: 我曾尝试使尾部约束的优先级低于其他约束,并尝试以多种方式修改内容拥抱和抗压缩属性,但均未成功 如何使视图展开,使其以最少的行数适合文本内容?对高度没有限制,只对宽度有限制Ios7 UItextview未按预期使用约束展开,ios7,interface-builder,uitextview,xib,Ios7,Interface Builder,Uitextview,Xib,我正在使用interface builder创建xib。此xib具有包含uitextview的uiview。当uitextview中的文本发生变化时,这两个视图都应该调整大小。约束看起来很像这样: 粉红色的UITextView推送蓝色的superview。蓝色uiView的最小宽度为189 px,尾部约束至少为8px 这在很大程度上是可行的。非常长的文本部分会根据预期最大程度地调整两个视图的大小,如果只有一个或两个单词,则视图会保持较小。然而,问题是当你有一个简短的句子 在本例中,视图仅扩展到
任何帮助都将不胜感激 您是否尝试过本文中介绍的解决方案 我相信您必须将UITextView设置为sizeToFit
[YourUITextView sizeToFit];
使用此方法获取textView的新大小
CGSize sz = [_textView.text sizeWithFont:_textView.font]
如果这对高度不起作用,请获取您刚才从preivous方法获得的宽度,并在下一种方法中使用,以获得您需要的适当高度
- (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;
}
关键是将preferredMaxLayoutWidth设置为较大的值(320px听起来不错。您的正确约束将限制它) 您可以在代码中这样做
[self.label setPreferredMaxLayoutWidth:320];
或从界面生成器中执行以下操作:
这样,您将看到标签按预期展开:
恐怕这根本没用。我根据你链接的帖子中的建议,在不同的区域放置了一个标签。似乎没有一个起作用。可能需要注意的是,我正在使用界面生成器设置UITextView不是uilabel,也没有首选的MaxLayoutWidth