删除新换行符的UITextView上的NSLineBreakByTruncatingTail

时间:2016-04-06 14:16:25

标签: ios uitextview newline truncation nstextcontainer

我有一个带有attributionText的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

2 个答案:

答案 0 :(得分:3)

尝试使用UILabel代替UITextView。它似乎在截断新行方面发挥得更好。

答案 1 :(得分:1)

随机尝试一下你已经不是解决问题的机会,但也许是解决办法,但无论如何都可能无法解决,但无论如何:

  • maximumNumberOfLines更改为0并依靠frames / autolayout来调整文本视图及其容器的大小,可能与设置文本容器{{1}相结合}属性heightTracksTextView

  • 在行的开头插入水平空格或不可见,否则只包含换行 #hacky