使用numberOfLines和lineBreakMode的UILabel

Tim*_*ich 7 cocoa-touch objective-c uilabel ios swift

我正在开发一个必须支持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
Run Code Online (Sandbox Code Playgroud)

我如何解决它?

小智 6

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

yourLabel.preferredMaxLayoutWidth = width; 
Run Code Online (Sandbox Code Playgroud)

UILable.preferredMaxLayoutWidth


Tim*_*ich 3

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