UITextView - 在iOS 6上截断显示省略号的文本(使用Autolayout)

时间:2014-03-21 00:19:27

标签: ios uitextview autolayout

我有一个UITextView,显示的文字长度超过了textview框架中的文字。我希望通过在iOS 6上显示省略号来截断文本。

iOS 7 上,我可以使用以下代码实现此目的

textView.textContainer.maximumNumberOfLines = 0;
textView.textContainer.lineBreakMode = NSLineBreakByTruncatingTail;

iOS 6 上,我可以截断文字,但不会显示省略号。

问题出在 iOS6 ,属性textContainer不可用

请注意:

  • 我正在使用AutoLayout,因此在设置文本时我不会知道帧大小。帧大小设置得晚得多。

问题

在iOS 6上,我如何能够显示省略号?

2 个答案:

答案 0 :(得分:1)

谢谢大家,@ matt帮助我找到了解决方案。

我认为最适合我的问题的是使用UILabel。

我在UILabel和Autolayout面临的唯一问题是,当文本只是一行时,文本垂直居中对齐,看起来很奇怪。

解决方案(Autolayout和UILabel)

  1. 使用UILabel
  2. preferredMaxLayoutWidth设置为所需的值。 这就是我真正缺少的
  3. 将高度约束设置为小于或等于为期望值
  4. 设置文本后和方向更改后使用sizeToFit
  5. 因此,如果sizeToFit返回的高度是高于最大高度的高度,那么将采用该大小,否则将采取步骤3中设置的最大高度

    这适用于iOS 6和iOS 7

答案 1 :(得分:0)

在iOS 6中没有直接的方法。但您可以尝试以下

int maximumCharacters = 200;
if([str length] > maximumCharacters) {
    str = [str substringToIndex:maxCharacters];
}

添加省略号:This post may help