归属字符串切割并在UILabel上将单个单词显示为两行

时间:2017-11-06 20:38:43

标签: swift uilabel nsattributedstring

我使用以下属性

创建属性文本
func attributedString(font: UIFont, contentColor: UIColor, alignment: NSTextAlignment) -> NSAttributedString {

    let paragraphStyle = NSMutableParagraphStyle()
    paragraphStyle.lineSpacing = 0.6
    paragraphStyle.lineHeightMultiple = 0.8
    paragraphStyle.alignment = alignment
    paragraphStyle.lineBreakMode = .byWordWrapping

    let lineSpacingAttribute: [NSAttributedStringKey: Any] = [NSAttributedStringKey.paragraphStyle: paragraphStyle, NSAttributedStringKey.font: font, NSAttributedStringKey.foregroundColor: contentColor]
    let attributedString = NSAttributedString(string: self, attributes: lineSpacingAttribute)

    return attributedString
}

我在自定义UILabel内的tableViewCell上显示此文字。但是,它将一个单词切成两个单词(剪切一个单词的最后一个字母并在下一行显示)。我已将numberOfLines设置为零,并将preferredMaxLayoutWidth设置为标签。我使用自定义字体。

enter image description here

此问题仅在小屏幕,iPhone SE和iPhone 5S模拟器上发生。但是,在其他模拟器上它正确显示。你能帮我弄清楚这有什么问题吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

来自 Apple doc:

  

var preferredMaxLayoutWidth:CGFloat

     

当应用布局约束时,此属性会影响标签的大小。在布局期间,如果文本超出此属性指定的宽度,则附加文本将流向一个或多个新行,从而增加标签的高度。

根据您的文字,您可以将 adjustsFontSizeToFitWidth 属性与 minimumScaleFactor 属性

一起使用