在iOS开发中,常常会有一段文字显示不同的颜色和字体,或者给某几个文字加删除线或下划线的需求。就需要富文本来实现。
一、实例化方法和使用方法
NSMutableAttributedString *detailStr = [[NSMutableAttributedString alloc] initWithString:detailString];
NSRange stringRange = NSMakeRange(0, 5);
[detailStr addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithHexString:@"#999999"] range:stringRange];// 添加单个属性
[detailStr addAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14],NSParagraphStyleAttributeName:paragraphStyle} range:NSMakeRange(0, detailString.length)];// 添加多个属性
[detailLabel setAttributedText:detailStr];
二、富文本属性
| 属性 | 作用 | 类型 |
|---|---|---|
| NSFontAttributeName | 字号 | UIFont 默认12 |
| NSParagraphStyleAttributeName | 段落样式 | NSParagraphStyle |
| NSForegroundColorAttributeName | 前景色 | UIColor |
| NSBackgroundColorAttributeName | 背景色 | UIColor |
| NSLigatureAttributeName | 连笔字 | 1或0 |
| NSKernAttributeName | 字间距 | CGFloat |
| NSStrikethroughStyleAttributeName | 删除线 | 1或0 |
| NSUnderlineStyleAttributeName | 下划线 | 1或0 |
| NSStrokeColorAttributeName | same as foreground color | UIColor |
| NSStrokeWidthAttributeName | 字体描边 | CGFloat |
| NSShadowAttributeName | 阴影 | NSShawdow |
| NSTextEffectAttributeName | 设置文本特殊效果,目前只有图版印刷效果可用 | NSString |
| NSAttachmentAttributeName | 设置文本附件,常用插入图片 | NSTextAttachment |
| NSLinkAttributeName | 链接 | NSURL (preferred) or NSString |
| NSBaselineOffsetAttributeName | 基准线偏移 | NSNumber |
| NSUnderlineColorAttributeName | 下划线颜色 | UIColor |
| NSStrikethroughColorAttributeName | 删除线颜色 | UIColor |
| NSObliquenessAttributeName | 字体倾斜 | NSNumber |
| NSExpansionAttributeName | 字体加粗 | NSNumber 比例 0就是不变 1增加一倍 |
| NSWritingDirectionAttributeName | 文字方向 分别代表不同的文字出现方向等等 | @[@(1),@(2)] |
| NSVerticalGlyphFormAttributeName | 水平或者竖直文本 在iOS,不支持竖版 | 1竖直 0水平 |
三、段落样式
段落样式主要改行距、段距、首行缩进、最大最小行高、多倍行距等十几个属性
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineSpacing = 5;
paragraphStyle.alignment = NSTextAlignmentLeft;
paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping;