繁体   English   中英

如果更改基线偏移量属性,则UILabel属性文本不能有多行

[英]UILabel attributed text can't have multiple lines if you change baseline offset attribute

我想用一个词来更改括号的基线偏移,例如“ [推] blablabla”。

NSRange range = [text rangeOfString:@"[推]"];
if (range.location == 0) {
    [text addAttribute:NSBaselineOffsetAttributeName value:@(0.5) range:NSMakeRange(0, 1)];
    [text addAttribute:NSBaselineOffsetAttributeName value:@(0.5) range:NSMakeRange(range.length-1, 1)];
}

但标签的第二行消失并被截断。 有人有主意吗?

请同时使用lineBreakMode和numberOfLines来调用sizeToFit,如下所示:

label.lineBreakMode = UILineBreakModeWordWrap;
label.numberOfLines = 0;
[label sizeToFit]; 

高度将自动计算。

谢谢

我进行了一些快速测试,似乎如果在字符串的开头添加空格,它将按预期工作

// make sure your text looks like @" [推]your content"
if (range.location == 1) {
    [text addAttribute:NSBaselineOffsetAttributeName value:@(0.5) range:NSMakeRange(1, 1)];
    [text addAttribute:NSBaselineOffsetAttributeName value:@(0.5) range:NSMakeRange(range.length, 1)];
}

如果您使用情节提要板,请参见下图,选择“标签”,然后查看“行数”设置为0,“换行符”设置为“自动换行”即解决了问题。

在此处输入图片说明

或者如果您使用代码,

目标C:

LabelName.lineBreakMode = UILineBreakModeWordWrap;
LabelName.numberOfLines = 0;

迅速:

LabelName.lineBreakMode = .ByWordWrapping
LabelName.numberOfLines = 0 

希望它有所帮助

您是否尝试使用NSMutableParagraphStyle将lineBreakMode设置为属性?

NSMutableParagraphStyle *paragrahStyle = [[NSMutableParagraphStyle alloc] init];
[paragrahStyle setLineBreakMode:NSLineBreakByTruncatingTail];

[attributedText addAttribute:NSParagraphStyleAttributeName value:paragrahStyle range:NSMakeRange(0, [attributedText length])];

像这里建议的那样: 具有多个换行模式的UILabel attributedText

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM