iOS NSMutableAttributedString

释放双眼,带上耳机,听听看~!

随着项目的不断迭代,普通的文本属性已经无法满足需求,就需要我们学习和使用更加灵活的富文本。AttributedString 可以分为 NSAttributedString 和 NSMutableAttributedString 两种。在使用中通过将 AttributedString 赋值给控件的 attributedText 属性来添加文字样式。有此属性的控件有 UILabel、UITextField 和 UITextView。

/

1、 NSFontAttributeName(字体)
该属性所对应的值是一个 UIFont 对象。该属性用于改变一段文本的字体。如果不指定该属性,则默认为12-point Helvetica(Neue)。

2、 NSParagraphStyleAttributeName(段落)
该属性所对应的值是一个 NSParagraphStyle 对象。该属性在一段文本上应用多个属性。如果不指定该属性,
则默认为 NSParagraphStyle 的defaultParagraphStyle 方法返回的默认段落属性。

3、 NSForegroundColorAttributeName(字体颜色)
该属性所对应的值是一个 UIColor 对象。该属性用于指定一段文本的字体颜色。如果不指定该属性,则默认为黑色。

4、 NSBackgroundColorAttributeName(字体背景色)
该属性所对应的值是一个 UIColor 对象。该属性用于指定一段文本的背景颜色。如果不指定该属性,则默认无背景色。

5、 NSLigatureAttributeName(连字符)
该属性所对应的值是一个 NSNumber 对象(整数)。连体字符是指某些连在一起的字符,
它们采用单个的图元符号。0 表示没有连体字符。1 表示使用默认的连体字符。2表示使用所有连体符号。默认值为 1(注意,iOS 不支持值为 2)。

6、 NSKernAttributeName(字间距)
该属性所对应的值是一个 NSNumber 对象(整数)。字母紧排指定了用于调整字距的像素点数。字母紧排的效果依赖于字体。值为 0 表示不使用字母紧排。默认值为0。

7、 NSStrikethroughStyleAttributeName(删除线)
该属性所对应的值是一个 NSNumber 对象(整数)。该值指定是否在文字上加上删除线,该值参考“Underline Style Attributes”。默认值是NSUnderlineStyleNone。

8、 NSUnderlineStyleAttributeName(下划线)
该属性所对应的值是一个 NSNumber 对象(整数)。该值指定是否在文字上加上下划线,该值参考“Underline Style Attributes”。默认值是NSUnderlineStyleNone。

9、 NSStrokeColorAttributeName(边线颜色)
该属性所对应的值是一个 UIColor 对象。如果该属性不指定(默认),则等同于 NSForegroundColorAttributeName。
否则,指定为删除线或下划线颜色。

10、 NSStrokeWidthAttributeName(边线宽度)
该属性所对应的值是一个 NSNumber 对象(小数)。该值改变描边宽度(相对于字体size 的百分比)。默认为 0,即不改变。正数只改变描边宽度。
负数同时改变文字的描边和填充宽度。例如,对于常见的空心字,这个值通常为3.0。

11、 NSShadowAttributeName(阴影)
该属性所对应的值是一个 NSShadow 对象。默认为 nil。

12、 NSVerticalGlyphFormAttributeName(横竖排版)
该属性所对应的值是一个 NSNumber 对象(整数)。0 表示横排文本。1 表示竖排文本。在 iOS 中,总是使用横排文本,0 以外的值都未定义

13、NSTextEffectAttributeName ->设置文本特殊效果,取值为 NSString 对象,目前只有图版印刷效果可用

14、 15. NSBaselineOffsetAttributeName ->设置基线偏移值,取值为 NSNumber (float),正值上偏,负值下偏

15、 NSObliquenessAttributeName ->设置字形倾斜度,取值为 NSNumber (float),正值右倾,负值左倾

Code1

NSString *str = @"人生若只如初见,何事悲风秋画扇。\n等闲变却故人心,却道故人心易变。\n骊山语罢清宵半,泪雨霖铃终不怨。\n何如薄幸锦衣郎,比翼连枝当日愿。";

// 创建 NSMutableAttributedString
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:str];

// 设置字体和设置字体的范围
[attrStr addAttribute:NSFontAttributeName
                value:[UIFont systemFontOfSize:30.0f]
                range:NSMakeRange(0, 3)];
// 添加文字颜色
[attrStr addAttribute:NSForegroundColorAttributeName
                value:[UIColor redColor]
                range:NSMakeRange(17, 7)];
// 添加文字背景颜色
[attrStr addAttribute:NSBackgroundColorAttributeName
                value:[UIColor orangeColor]
                range:NSMakeRange(17, 7)];
// 添加下划线
[attrStr addAttribute:NSUnderlineStyleAttributeName
                value:[NSNumber numberWithInteger:NSUnderlineStyleSingle]
                range:NSMakeRange(8, 7)];

UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(60, 100, 200, 0)];
label.backgroundColor = [UIColor greenColor];
// 自动换行
label.numberOfLines = 0;
// 设置label的富文本
label.attributedText = attrStr;
// label高度自适应
[label sizeToFit];
[self.view addSubview:label];

Code2

//创建属性字典
    NSDictionary *attrDict = @{ NSFontAttributeName: [UIFont fontWithName: @"Zapfino" size: 15],
                                NSForegroundColorAttributeName: [UIColor blueColor] };
 //创建 NSAttributedString 并赋值
_label.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict]



//===============方式2=======================
    UIFont *fond = [UIFont systemFontOfSize:20];
    UIColor *color = [UIColor redColor];
    
    NSMutableDictionary *attributes = [NSMutableDictionary new];
    [attributes setObject:fond forKey:NSFontAttributeName];
    [attributes setObject:color forKey:NSForegroundColorAttributeName];
    return [[NSAttributedString alloc]initWithString:text attributes:attributes];

 

人已赞赏
iOS文章

iOS中UITableViewController自带的刷新控件

2019-10-7 15:17:26

iOS文章

iOS--WebView加载HTML图片大小自适应与文章自动换行

2019-10-7 16:43:38

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索