昨天要把项目当中的label转换成textView ,问题在与里面装的是包含div的富文本,原先的labal使用了一个三方框架,转换是没有问题的,使用了TextView之后,关键点有两个
1.把链接识别出来
这个项目对于链接是有包装的,客户端会解析这些包装,把相关链接装起来,备用,然后加到linkAttributes就可以了
2.把包含div , br ,font
之流的标签去掉
这个直接一行代码
NSAttributedString * as = [[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUTF8StringEncoding] options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)} documentAttributes:nil error:nil];
如果要设置相关attributes , 加进去就好了
3.文本的颜色
原本以为进行了上一步就没有问题了,结果发现,文本中某些字的颜色并不是和预期的一样,所以这个问题困扰了我挺久,将文本打印出来也明明就有颜色的属性,之后不断调试分析,只能做一下转换,因为打印出来的文本的属性名kCTForegroundColorAttributeName
, NSForegroundColorAttributeName
是不同的,我只能枚举所有的KCT,将属性一个个加到NS里面去,然后就好了,很奇怪的是,在labal里面也是只有KCT,但在那里是显示没有问题的,TextView就不行,还不知道原因,很想问:kCTForegroundColorAttributeName
, NSForegroundColorAttributeName
,有什么区别与联系吗?