【作者前言】: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;
}
更新區>>>
看到評論區的問題,我試驗了一下:
image.png
因為當初用到上述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];