1.加载HTML标签文本
因为解析的数据里面有html标签,就使用下面的代码把字符串转换成data,初始化时再用HTML类型,转换为富文本。
NSMutableAttributedString * attrStr = [[NSMutableAttributedString alloc] initWithData:[str dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];
参数options里面的字典有三对key value
文档类型NSDocumentTypeDocumentAttribute
NSPlainTextDocumentType
NSRTFTextDocumentType
NSRTFDTextDocumentType
NSHTMLTextDocumentType
编码格式NSCharacterEncodingDocumentAttribute
[NSNumber numberWithInt:NSUTF8StringEncoding]
默认NSDefaultAttributesDocumentAttribute
这个不知道对应的value是什么
2.富文本总结
这是富文本的所有属性
属性Name | 干啥的 | 类型 |
---|
NSFontAttributeName | 字号 | UIFont 默认12 |
NSParagraphStyleAttributeName | 段落样式 | NSParagraphStyle |
NSForegroundColorAttributeName | 前景色 | UIColor |
NSBackgroundColorAttributeName | 背景色 | UIColor |
NSObliquenessAttributeName | 字体倾斜 | NSNumber |
NSExpansionAttributeName | 字体加粗 | NSNumber 比例 0就是不变 1增加一倍 |
NSKernAttributeName | 字间距 | CGFloat |
NSUnderlineStyleAttributeName | 下划线 | 1或0 |
NSUnderlineColorAttributeName | 下划线颜色 | UIColor |
NSStrikethroughStyleAttributeName | 删除线 | 1或0 |
NSStrikethroughColorAttributeName | 删除线颜色 | UIColor |
NSStrokeColorAttributeName | same as ForegroundColor | UIColor |
NSStrokeWidthAttributeName | 字体描边 | CGFloat |
NSLigatureAttributeName | 连笔字 没看出效果 | 1或0 |
NSShadowAttributeName | 阴影 | NSShawdow |
NSTextEffectAttributeName | 设置文本特殊效果,目前只有图版印刷效果可用 | NSString |
NSAttachmentAttributeName | 设置文本附件,常用插入图片 | NSTextAttachment |
NSLinkAttributeName | 链接 | NSURL (preferred) or NSString |
NSBaselineOffsetAttributeName | 基准线偏移 | NSNumber |
NSWritingDirectionAttributeName | 文字方向 分别代表不同的文字出现方向等等,我想你一定用不到它 - - | @[@(1),@(2)] |
NSVerticalGlyphFormAttributeName | 水平或者竖直文本 在iOS没卵用,不支持竖版 | 1竖直 0水平 |
解释一下其中的三个类型
段落样式
段落样式主要改行距、段距、首行缩进、最大最小行高、多倍行距等十几个属性,把这些总结了你就比我更全..
NSMutableParagraphStyle *muParagraph = [[NSMutableParagraphStyle alloc]init];
muParagraph.lineSpacing = 10;
muParagraph.paragraphSpacing = 20;
muParagraph.firstLineHeadIndent = 30;
阴影
就三属性,不用解释了
NSShadow *shadow = [[NSShadow alloc]init];
shadow.shadowOffset = CGSizeMake(2, 2);
shadow.shadowColor = [UIColor orangeColor];
shadow.shadowBlurRadius = 1;
附件
这个我的也没显示出来,想钻研的看这里http://www.jianshu.com/p/5babe8b7983e
NSTextAttachment *attachment=[[NSTextAttachment alloc] initWithData:nil ofType:nil];
UIImage *img=[UIImage imageNamed:@"test.png"];
attachment.image=img;
attachment.bounds=CGRectMake(0, 0, 20, 20);
下面是我的富文本代码,可以copy过去直接试
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor grayColor];
[self.view addSubview:self.attTV];
NSParagraphStyle *paragraph = [[NSParagraphStyle alloc]init];
NSMutableParagraphStyle *muParagraph = [[NSMutableParagraphStyle alloc]init];
muParagraph.lineSpacing = 10;
muParagraph.paragraphSpacing = 20;
muParagraph.firstLineHeadIndent = 30;
NSMutableAttributedString * attrStr = [[NSMutableAttributedString alloc] initWithData:[@"asdasdflhjlfsaiollzislooa" dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];
NSRange range = NSMakeRange(0, attrStr.length);
[attrStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:30] range:range];
[attrStr addAttribute:NSKernAttributeName value:@(2) range:range];
[attrStr addAttribute:NSObliquenessAttributeName value:@(1) range:range];
[attrStr addAttribute:NSExpansionAttributeName value:@(0.5) range:range];
[attrStr addAttribute:NSUnderlineStyleAttributeName value:@(1) range:range];
[attrStr addAttribute:NSUnderlineColorAttributeName value:[UIColor blueColor] range:range];
[attrStr addAttribute:NSStrikethroughStyleAttributeName value:@(1) range:range];
[attrStr addAttribute:NSStrikethroughColorAttributeName value:[UIColor greenColor] range:range];
[attrStr addAttribute:NSLigatureAttributeName value:@(1) range:range];
[attrStr addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithRed:0.942 green:0.611 blue:0.771 alpha:1.000] range:range];
[attrStr addAttribute:NSBackgroundColorAttributeName value:[UIColor colorWithRed:0.475 green:0.482 blue:0.942 alpha:1.000] range:range];
[attrStr addAttribute:NSStrokeColorAttributeName value:[UIColor blueColor] range:range];
[attrStr addAttribute:NSStrokeWidthAttributeName value:@(2) range:range];
[attrStr addAttribute:NSParagraphStyleAttributeName value:muParagraph range:range];
[attrStr addAttribute:NSVerticalGlyphFormAttributeName value:@(1) range:range];
[attrStr addAttribute:NSWritingDirectionAttributeName value:@[@(2),@(3)] range:range];
NSShadow *shadow = [[NSShadow alloc]init];
shadow.shadowOffset = CGSizeMake(2, 2);
shadow.shadowColor = [UIColor orangeColor];
shadow.shadowBlurRadius = 1;
[attrStr addAttribute:NSShadowAttributeName value:shadow range:range];
[attrStr addAttribute:NSLinkAttributeName value:[NSURL URLWithString:@"http://www.jianshu.com/p/8f49c9c99b21"] range:range];
NSTextAttachment *attachment=[[NSTextAttachment alloc] initWithData:nil ofType:nil];
UIImage *img=[UIImage imageNamed:@"test.png"];
attachment.image=img;
attachment.bounds=CGRectMake(0, 0, 20, 20);
[attrStr addAttribute:NSAttachmentAttributeName value:attachment range:range];
[attrStr addAttribute:NSBaselineOffsetAttributeName value:@(50) range:range];
self.attTV.attributedText = attrStr;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
我的效果图很磕馋