这让我困惑了一段时间。这是我的代码:
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),那么它可以正常工作。 任何想法???
答案 0 :(得分:1)
代码绝对正常。为什么呢?
文字不会缩小,因为它适合其框架。
该文字没有使用截断,因为它适合其框架。
自动换行被忽略,因为单词不适合单行。
我建议您根据内容动态设置包装属性。如果文字只有一个字,请将numberOfLines
设为1
,否则将其设为0
或2-3
。这将解决你的大部分问题。
let multipleWords = stText.rangeOfCharacterFromSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()) != nil
label.numberOfLines = multipleWords ? 0 : 1
答案 1 :(得分:-1)
试试这个:
label.numberOfLines = 1
将numberOfLines设置为0会使标签成为多行。