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 的同时保留新行?
如果你还没有尝试过的随机事情甚至不是解决方案,但可能是解决方法,并且可能无论如何都行不通,但无论如何:
将 maximumNumberOfLines
更改为 0
并依靠 frames/autolayout 来调整文本视图及其容器的大小,也许结合设置文本容器的 heightTracksTextView
属性 到 true
在仅包含换行符的行的开头插入水平空格或不可见字符 #hacky
尝试使用 UILabel
而不是 UITextView
。它似乎在截断新行方面表现得更好。
我有一个带有 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 的同时保留新行?
如果你还没有尝试过的随机事情甚至不是解决方案,但可能是解决方法,并且可能无论如何都行不通,但无论如何:
将
maximumNumberOfLines
更改为0
并依靠 frames/autolayout 来调整文本视图及其容器的大小,也许结合设置文本容器的heightTracksTextView
属性 到true
在仅包含换行符的行的开头插入水平空格或不可见字符 #hacky
尝试使用 UILabel
而不是 UITextView
。它似乎在截断新行方面表现得更好。