UILabel使用多个换行模式赋予了Text

Vil*_*nne 10 objective-c nsattributedstring uilabel ios

我需要显示一个UILabel文本,它有两种不同的样式(不同的颜色,文本的部分粗体).使用attributedText属性可以很容易地解决这个问题.

我的问题是文本可能会或可能不会长于我可以放在标签中的内容.使用纯文本时,一切都按我想要的方式工作.文本是自动换行以适合标签中的行数,如果/当文本比标签中显示的长时,则尾部被截断.

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

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

jal*_*aas 9

当我设置linespacing时,我错过了截断,但我只需要将linebreakmode添加到paragraphstyle

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;
Run Code Online (Sandbox Code Playgroud)


hon*_*nus 5

他们让我能够使用它的唯一方法是不设置段落样式。


Bre*_*don 0

NSParagraphStyle您可以根据需要设置lineBreakMode,并使用 将其应用于字符串NSParagraphStyleAttributeName。我不知道是否所有的价值观都NSLineBreakMode得到支持,但我没有理由相信它们不被支持。

  • 我这样做并尝试在其上设置多种样式,但第二种样式总是被忽略。这是我尝试过的: self.paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping | NSLineBreakByTruncateTail; (2认同)