【作者前言】:13年入圈,分享些本人工作中遇到的点点滴滴那些事儿,17年刚开始写博客,高手勿喷!以分享交流为主,欢迎各路豪杰点评改进!
1.应用场景:
有些编辑器相关的地方需要我们处理富文本与超文本之间的关系
2.实现目标:
实现富文本与超文本之间的相互转化
3.代码说明:
/** 富文本NSAtrributeString格式转换为超文本HTML格式*/
- (NSString *)htmlStringByAttributeString:(NSAttributedString *)htmlAttributeString {
NSString *htmlString;
NSDictionary *exportParams = @{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
NSCharacterEncodingDocumentAttribute: [NSNumber numberWithInt:NSUTF8StringEncoding]
};
NSData *htmlData = [htmlAttributeString dataFromRange:NSMakeRange(0, htmlAttributeString.length) documentAttributes:exportParams error:nil];
htmlString = [[NSString alloc] initWithData:htmlData encoding:NSUTF8StringEncoding];
return htmlString;
}
/** 超文本HTML格式转换为富文本AtrributeString格式*/
- (NSAttributedString *)attributeStringByHtmlString:(NSString *)htmlString {
NSAttributedString *attributeString;
NSData *htmlData = [htmlString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *importParams = @{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
NSCharacterEncodingDocumentAttribute: [NSNumber numberWithInt:NSUTF8StringEncoding]
};
NSError *error = nil;
attributeString = [[NSAttributedString alloc] initWithData:htmlData options:importParams documentAttributes:NULL error:&error];
return attributeString;
}
更新区>>>
看到评论区的问题,我试验了一下:
因为当初用到上述API的时候,我是在英文模式下开发和使用的一个旅游软件--- 没有出现评论区的问题
斜体消失的原因-并不是API有问题,应该是iOS系统对中文的解析不是很到位---o(* ̄︶ ̄*)o
暂时的解决方案:查了一些资料,一般都是通过旋转一定的角度来支撑中文斜体的,但是感觉这个要是应用大篇幅的Html上-可能解析html就有点儿繁琐了~~~
暂时无好的解决方案-有时间我会在研究一波--- 继续写Vue项目去了...┭┮﹏┭┮
CGAffineTransform matrix = CGAffineTransformMake(1, 0, tanf(10 * (CGFloat)M_PI / 180), 1, 0, 0);
UIFontDescriptor *desc = [UIFontDescriptor fontDescriptorWithName:[UIFont systemFontOfSize:30].fontName matrix:matrix];
label.font = [UIFont fontWithDescriptor:desc size:20];