UILabel中的NSAttributedString尾截断

时间:2016-05-13 10:34:33

标签: ios swift uilabel nsattributedstring hashtag

我正在使用ContextLabel来解析@,#和URL。这是我发现的最佳解决方案,因为它的尺寸正确并且不会影响性能。它首先在输入处解析字符串,然后将其转换为NSAttributedString,然后将其分配给attributedText的{​​{1}}属性。一切都按预期工作,除了尾部截断 - 它是非常不正确的(见下图)

enter image description here

我应该从哪里开始挖掘 - 属性字符串的属性是否错误?还是标签布局问题?谢谢!

2 个答案:

答案 0 :(得分:33)

我遇到了这个问题并通过添加NSParagraphStyle来指定所需的换行模式来修复它:

    //assuming myString is an NSMutableAttributedString
    let paragraphStyle = NSMutableParagraphStyle()
    paragraphStyle.lineBreakMode = .byTruncatingTail

    let range = NSRange(location: 0, length: myString.mutableString.length)
    myString.addAttribute(NSParagraphStyleAttributeName, value: paragraphStyle, range: range)

有关详细信息,请参阅Word wrap for NSMutableAttributedString

答案 1 :(得分:7)

以下也适用,无论使用AttributedText还是普通文本 将AttributedText和字体设置为标签后,请确保添加以下行:

label.lineBreakMode = .byTruncatingTail