UILabel 中的 NSAttributedString 尾部截断

NSAttributedString tail truncation in UILabel

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

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

我遇到了这个问题并通过添加 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 以获取更多参考。

无论使用 AttributedText 还是普通文本,以下内容也有效。
确保添加以下行 after 将 AttributedText 和字体设置为标签:

label.lineBreakMode = .byTruncatingTail