UItextview 没有按预期扩展约束
Posted
技术标签:
【中文标题】UItextview 没有按预期扩展约束【英文标题】:UItextview not expanding with constraints as expected 【发布时间】:2014-04-22 22:46:15 【问题描述】:我正在使用界面生成器来创建 xib。这个 xib 有一个包含 uitextview 的 uiview。两者都应该随着 uitextview 中的文本更改而调整大小。约束看起来很像这样:
粉红色的 UITextView 推动蓝色的 superview。蓝色 uiView 的最小宽度为 189 像素,尾部约束至少为 8 像素。
在大多数情况下,这是可行的。很长的文本部分会按预期将两个视图的大小调整到最大允许范围,如果只有一两个单词,则视图会保持较小。但是,问题在于您的句子很短。
在这种情况下,视图仅扩展至大约 189 像素,即使有空间可扩展,文本也会移动到第二行。
这就是你只输入几个词时的样子:
这是一个完全展开的盒子:
我尝试使尾随约束的优先级低于其他约束,并且我尝试以多种方式修改内容拥抱和抗压缩属性,但均未成功。
如何使视图展开,以使它们以最少的行数适应文本内容?没有高度限制,只有宽度。
任何帮助将不胜感激!
【问题讨论】:
【参考方案1】:使用该方法获取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;
【讨论】:
【参考方案2】:关键是将preferredMaxLayoutWidth 设置为较大的值(320px 听起来不错。无论如何你的正确约束都会限制它)。
你可以在你的代码中这样做
[self.label setPreferredMaxLayoutWidth:320];
或者从 Interface Builder 如下:
这样您会看到标签按预期展开:
【讨论】:
uitextview 不是 uilabel,也没有 preferredMaxLayoutWidth【参考方案3】:您是否尝试过本文中提出的解决方案?
Dynamic expand UITextView on ios 7
我相信你必须将你的 UITextView 设置为 sizeToFit
[YourUITextView sizeToFit];
【讨论】:
恐怕这根本没有帮助。我也按照您链接的帖子中的建议放置在不同的区域。似乎都没有工作。也许重要的是要注意我正在使用界面生成器来设置这些以上是关于UItextview 没有按预期扩展约束的主要内容,如果未能解决你的问题,请参考以下文章
如何向标签添加约束,使其始终与动态的 UITextView 相距 0 点?
Oracle SQL - REGEXP_LIKE 在 CHECK 约束中没有按预期工作
为啥我的 UITextView 在我使用 frame 属性时出现,但在我使用约束时却没有?