首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS为什么NSParagraphStyle重置原始文本样式

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

Stack Overflow用户
提问于 2018-06-15 09:02:04
回答 1查看 677关注 0票数 0

例如,我使用UILabelattributedText来加载HTML:

代码语言:javascript
复制
<p style="text-align: center;">sometext</p>

我使用NSParagraphStyle来更改这个HTML的所有元素的line-height

代码语言:javascript
复制
NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new];
paragraphStyle.minimumLineHeight = 20; // line-height: 20;

[attributedString addAttribute:NSParagraphStyleAttributeName
                         value:paragraphStyle
                         range:NSMakeRange(0, attributedString.length)];

它起作用了。但是它会将text-align重置为左。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-15 09:26:29

属性的工作方式类似于字典:键/值在定义的范围内。键是统一的,所以您要重写值,而不复制其以前的样式。

要做您想做的事情,您需要枚举属性化字符串,查找NSParagraphStyleAttributeName,并在必要时修改它。

代码语言:javascript
复制
[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];
    }
}];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50872280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档