【问题标题】:UITextView with autolayout is wordwrapping too soon带有自动布局的 UITextView 过早地自动换行
【发布时间】:2014-07-05 02:26:11
【问题描述】:

我正在尝试在 UICollectionViewCell 内设置具有自动布局规则的 UITextView。

我对它的前导和尾随有限制,例如: 前导大于等于 1:8 屏幕宽度,尾随等于屏幕宽度减去 15px。

这很好用并且在大多数情况下都能实现我想要的行为(保持文本视图尽可能小,直到它超过我的最大行长度,然后它会自动换行)。但是,对于某些字符串/字符串长度,它会过早地搞砸和截断。

一个例子: 如果我将 UITextView 的文本设置为:“http://www.billywitchdoctor.com”,它会全部打印在一行上。

但是,如果我将它设置为:www.billywitchdoctor.com,“m”会以某种方式被敲到下一行,所以它呈现为:

www.billywitchdoctor.co
m

即使有足够的空间让气泡横向拉伸。我已经尝试将 UITextView 的 Compression Resistance Priority 设置为 1000 并减少拥抱,但我似乎无法采取任何措施来消除此问题,只要我对气泡有这两个约束(领先 >= 1:8 单元格尾随和尾随 == 单元格尾随。)

我知道我可以通过自己计算和指定宽度以编程方式解决每个单元格的这个问题,但如果可能的话,我宁愿使用自动布局。

【问题讨论】:

  • 为什么有前导约束?你想让你的文本右对齐吗?
  • 把它想象成消息中的聊天气泡。文本在聊天气泡中,聊天气泡的宽度由文本的宽度定义,聊天气泡是右对齐的,但文本在聊天气泡内是左对齐的。
  • 每当文本发生变化时,您可能需要在文本视图上调用layoutIfNeeded
  • 一个方便的位置。在非洲。

标签: ios objective-c ios7 uitextview autolayout


【解决方案1】:

尝试在文本更改时使布局无效。

- (IBAction)textViewDidChange:(UITextView*)textView {
    [textView invalidateIntrinsicContentSize];
}

【讨论】:

  • 现在,无论我是否更改文本,甚至将其设置为故事板之外的任何内容,都会发生这种情况
  • 您是否尝试过使用此委托方法?
  • 是的,我在 ViewController 中实现了它并设置了 textview 的委托,但它没有被调用。
猜你喜欢
  • 2015-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-25
  • 1970-01-01
相关资源
最近更新 更多