iOS为什么NSParagraphStyle重置原始文本样式

时间:2018-06-15 09:02:05

标签: ios nsattributedstring nsparagraphstyle

我使用UILabel的{​​{1}}加载HTML字符串,例如:

attributedText

我使用<p style="text-align: center;">sometext</p> 更改此HTML所有元素的NSParagraphStyle

line-height

有效。但它会将NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new]; paragraphStyle.minimumLineHeight = 20; // line-height: 20; [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, attributedString.length)]; 重置为左侧。

1 个答案:

答案 0 :(得分:0)

属性的工作方式类似于词典:定义范围内的键/值。 密钥是唯一的,因此您可以覆盖该值而不复制其先前的样式。

要执行您想要的操作,您需要枚举查找NSParagraphStyleAttributeName的属性字符串,并在必要时进行修改。

[attributedString enumerateAttribute:NSParagraphStyleAttributeName inRange:NSMakeRange(0, [attributedString length]) options:0 usingBlock:^(id  _Nullable value, NSRange range, BOOL * _Nonnull stop) {
    if ([value isKindOfClass:[NSParagraphStyle class]]) {
        NSMutableParagraphStyle *style = [value mutableCopy];
        style.minimumLineHeight = 20;
        [attributedString addAttribute:NSParagraphStyleAttributeName value:style range:range];
    }
}];