【发布时间】:2018-05-06 08:21:18
【问题描述】:
我有一个uitextview,我想根据内容动态加载它, 此链接的答案在 iOS11 上不起作用。 https://stackoverflow.com/a/20999067/365384
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;
我唯一能做的就是使用约束更新约束
CGFloat fixedWidth = self.textView .frame.size.width;
CGSize newSize = [self.textView sizeThatFits:CGSizeMake(fixedWidth, MAXFLOAT)];
self.textViewHeightConstraint.constant = newSize.height;
我正在开发一个通用应用程序,我不想在代码中使用太多约束。有什么方法可以在不增加额外约束的情况下修复它?
【问题讨论】:
-
您的问题不清楚...您想做什么? 为什么你需要得到高度? 什么时候你需要得到高度?
-
我想在屏幕上显示一个带有超链接的段落,该段落来自服务器,所以在我得到服务器的响应之前我不知道它的实际长度。然后我尝试了不同的方法来根据内容更新uitextview高度,除了更新约束之外,所有这些方法都失败了。
-
好的 - 这仍然没有告诉我为什么你需要得到高度。您是否在情节提要中设置了约束?
UITextView会自动调整自己的高度,如果你允许的话。设置顶部、前导和尾随约束,但不要设置底部或高度约束。禁用滚动。根据需要设置数据检测器。根据需要设置 Editable 和 Selectable。现在,当您更改 textview 的文本时,它的高度会发生变化。不需要 sizeToFit 或 sizeThatFits 或更改约束或强制布局子视图。 -
我没有设置约束,我只设置了 height >= 10,然后 UITextView 没有根据内容自动调整高度。所以我必须调用 layoutsubviews 来强制它根据内容大小布局内容。
-
我放了一个示例应用来演示:github.com/DonMag/TextViewAutoSize
标签: ios uitextview sizetofit