我想在单词中更改括号的基线偏移量,例如" [推荐] 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)];
}
但标签的第二行消失并被截断。有人有想法吗?
答案 0 :(得分:2)
请使用lineBreakMode和numberOfLines 也可以调用sizeToFit,如下所示:
label.lineBreakMode = UILineBreakModeWordWrap;
label.numberOfLines = 0;
[label sizeToFit];
将自动计算高度。
由于
答案 1 :(得分:0)
如果您使用情节提要,请参阅下面的图像,选择标签,然后看到行设置为0和换行符设置Word Wrap解决。
或者如果您使用代码,
目标C:
LabelName.lineBreakMode = UILineBreakModeWordWrap;
LabelName.numberOfLines = 0;
夫特:
LabelName.lineBreakMode = .ByWordWrapping
LabelName.numberOfLines = 0
希望它有用
答案 2 :(得分:0)
您是否尝试使用NSMutableParagraphStyle
将lineBreakMode设置为属性?
NSMutableParagraphStyle *paragrahStyle = [[NSMutableParagraphStyle alloc] init];
[paragrahStyle setLineBreakMode:NSLineBreakByTruncatingTail];
[attributedText addAttribute:NSParagraphStyleAttributeName value:paragrahStyle range:NSMakeRange(0, [attributedText length])];
像这里提出的那样:UILabel attributedText with multiple line break modes
答案 3 :(得分:0)
我做了一些快速测试,似乎如果你在字符串的第一个处添加一个空格,它将按预期工作
// 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)];
}