我有一个内容和帧大小宽度等于348的UITextView,但只要一行上的文字宽度超过338.61就会发生自动换行。有谁知道为什么会发生这种情况?如何动态访问UITextView用于自动换行的宽度?
答案 0 :(得分:7)
从iOS 7开始,是的。它是textContainerInset
和lineFragmentPadding
的组合。
UITextView *textView = ...;
CGFloat wrappingWidth = textView.bounds.size.width - (textView.textContainerInset.left + textView.textContainerInset.right + 2 * textView.textContainer.lineFragmentPadding);
这是一个值得了解的好价值。您可以在boundingRectWithSize:
来电中使用它,例如:
CGRect boundingRect = [text boundingRectWithSize:CGSizeMake(wrappingWidth, CGFLOAT_MAX)
options:NSStringDrawingUsesLineFragmentOrigin // this is important
attributes:@{ NSFontAttributeName: textView.font } // and any other attributes of your text
context:nil];
同样很酷的是,您可以设置textContainerInset
和lineFragmentPadding
,因此如果您想要增加此值,或者拥有一个没有插入的呈现UITextView
(因此它与{匹配} {1}},例如),你可以。
答案 1 :(得分:0)
上面的答案没有错,但我一直在研究UITextView自动换行行为,并发现尽管可以调整textview的contentSize和textContainer的相应大小,但还有一种更改文本换行位置的方法(当使用自动布局时)是将SuperView的尾随空间变为负值。这将允许人们将自动换行功能向外推到右侧。尚未完成研究,但这个提示应该帮助任何人寻求更好地控制UITextView自动换行行为。
一旦我完成就会发布代码,但是现在调整UITextView的尾随约束将移动单词/字符包装的最右边位置。