使用numberOfLines和lineBreakMode的UILabel

时间:2014-01-03 12:43:50

标签: ios objective-c swift cocoa-touch uilabel

我正在开发一个必须支持iOS6和iOS7的项目。我的问题是它在不同的系统上有所不同。我正在尝试使用等于2的行数创建UILabel,但是当我将它的换行模式设置为NSLineBreakByTruncatingTail时,它的工作方式不同。

解释(numberOfLines = 2,text = @“long teeexxxttt”):

    iOS7                    iOS6
      NSLineBreakByWordWrapping
 ----------              ----------
|long      |            |long      |
|teeeexxxtt|            |teeeexxxtt|
 ----------              ----------

     NSLineBreakByTruncatingTail
 ----------              ----------
|long      |            |long te...|
|teeeexx...|            |          |
 ----------              ----------
     ^                       ^
     |                       |
  correct                incorrect - shows only one line

我该如何解决?

3 个答案:

答案 0 :(得分:3)

问题是iOS6和之前的版本不会使用自定义UIFont和NSLineBreakByTruncatingTail更新多行UILabel,但您可以使用自动调整大小或自动布局来存档相同的结果。

答案 1 :(得分:3)

Swift 2.1

yourLabel.text = "your text"
yourLabel.numberOfLines = 0
yourLabel.lineBreakMode = NSLineBreakMode.ByWordWrapping
yourLabel.sizeToFit()

答案 2 :(得分:3)

我知道这是一个老问题,但我最近遇到了同样的问题。我发现有了约束,我必须设置首选宽度才能让省略号正常运行:

yourLabel.preferredMaxLayoutWidth = width; 

UILable.preferredMaxLayoutWidth