UITextView 上的 NSLineBreakByTruncatingTail 删除换行符

NSLineBreakByTruncatingTail on UITextView removing new line breaks

我有一个带有 attributedText 的 UITextView,它的属性字符串中包含多个换行符。

NSMutableAttributedString *info = [[NSMutableAttributedString alloc] initWithString:@""];

NSAttributedString *title = [[NSAttributedString alloc] initWithString: [NSString stringWithFormat:@"%@\n", item.title] attributes:titleAttributes];

NSAttributedString *description = [[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@\n\n", description] attributes:descriptionAttributes]

[info appendAttributedString:bioItemTitle];
[info appendAttributedString:bioItemDescription];

textView.attributedText = info;

我已经将 textView 的 textContainer 的 lineBreakMode 设置为 NSLineBreakByTruncatingTail。

textView.textContainer.lineBreakMode = NSLineBreakByTruncatingTail;

textView 的 textContainer 也有最大行数。

textView.textContainer.maximumNumberOfLines = 8;

当textView的第8行是一个新行,而不是一行字符时,问题就出现了。 textContainer 通过删除新行并将其替换为下一行书写字符来截断。

如何在设置 lineBreakMode 的同时保留新行?

See screenshots

如果你还没有尝试过的随机事情甚至不是解决方案,但可能是解决方法,并且可能无论如何都行不通,但无论如何:

  • maximumNumberOfLines 更改为 0 并依靠 frames/autolayout 来调整文本视图及其容器的大小,也许结合设置文本容器的 heightTracksTextView 属性 到 true

  • 在仅包含换行符的行的开头插入水平空格或不可见字符 #hacky

尝试使用 UILabel 而不是 UITextView。它似乎在截断新行方面表现得更好。