我需要显示带有两种不同样式(不同颜色,部分文本以粗体显示)的UILabel。通过使用attributedText-property可以很容易地解决此问题。

我的问题是,文字的长度可能会或可能不会长于我在标签中所能容纳的长度。使用纯文本时,所有内容均按我想要的方式工作。文本被自动换行以适合标签中的行数,如果/当文本长于标签中可以显示的长度时,尾部将被截断。

当我切换到使用attributedText时,我只能在尾部截断和自动换行之间进行选择。如果我希望尾部被截断,则标签仅用尾部截断呈现一行(即使它可以容纳10行)。如果我选择自动换行,则尾部不会被截断,但是不会显示标签中不适合的行。

我的内容字符串不包含任何换行符,只是一个长字符串。

最佳答案

设置行距时我错过了截断,但是我要做的就是将linebreakmode添加到段落样式

NSMutableParagraphStyle *paragrahStyle = [[NSMutableParagraphStyle alloc] init];
[paragrahStyle setLineSpacing:1.5];
[paragrahStyle setLineBreakMode:NSLineBreakByTruncatingTail];
NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc] initWithString:@"Long string that truncates"];
[attributedText addAttribute:NSParagraphStyleAttributeName value:paragrahStyle range:NSMakeRange(0, [attributedText length])];

self.label.attributedText = attributedText;

10-01 23:10