UILabel不尊重截断

时间:2016-06-05 18:32:01

标签: ios swift2 uilabel truncate

这让我困惑了一段时间。这是我的代码:

 let label:UILabel = UILabel(frame: CGRectMake(0, 0, obTextRect.width, obTextRect.height))
            label.text = stText
            label.backgroundColor = UIColor.redColor()
            label.textAlignment = NSTextAlignment.Center
            label.numberOfLines = 0
            label.lineBreakMode = NSLineBreakMode.ByTruncatingTail
            label.font = obDrawItem.m_obFont
            label.adjustsFontSizeToFitWidth = true
            label.minimumScaleFactor = 0.1
            label.layer.drawInContext(obContext)


            CGContextRestoreGState(obContext)

这是我得到的结果......

proceedin
g

单词“proceeding”不会“自动缩小”以适应宽度。 此外,如果我添加换行符(\ n),那么它可以正常工作。 任何想法???

2 个答案:

答案 0 :(得分:1)

代码绝对正常。为什么呢?

  1. 文字不会缩小,因为它适合其框架。

  2. 该文字没有使用截断,因为它适合其框架。

  3. 自动换行被忽略,因为单词不适合单行。

  4. 我建议您根据内容动态设置包装属性。如果文字只有一个字,请将numberOfLines设为1,否则将其设为02-3。这将解决你的大部分问题。

    let multipleWords = stText.rangeOfCharacterFromSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()) != nil
    label.numberOfLines = multipleWords ? 0 : 1
    

答案 1 :(得分:-1)

试试这个:

label.numberOfLines = 1

将numberOfLines设置为0会使标签成为多行。