Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NSAttributedString到不带CSS的HTML字符串_Html_Ios_Uiwebview_Nsattributedstring - Fatal编程技术网

NSAttributedString到不带CSS的HTML字符串

NSAttributedString到不带CSS的HTML字符串,html,ios,uiwebview,nsattributedstring,Html,Ios,Uiwebview,Nsattributedstring,我正在尝试将HTML转换为NSAttributedString格式并返回。从HTML转换工作正常,但是转换回HTML会给我一种无法发送到后端的格式: <!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html

我正在尝试将HTML转换为NSAttributedString格式并返回。从HTML转换工作正常,但是转换回HTML会给我一种无法发送到后端的格式:

<!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv=Content-Style-Type" content="text/css">
<title></title>
<meta name="Generator" content="Cocoa HTML Writer">
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 16.0px 'Times New Roman'; color: #000000; -webkit-text-stroke: #000000}
span.s1 {font-family: 'Times New Roman'; font-weight: normal; font-style: normal; font-size: 16.00pt; font-kerning: none}
span.s2 {font-family: 'TimesNewRomanPS-BoldMT'; font-weight: bold; font-style: normal; font-size: 16.00pt; font-kerning: none}
span.s3 {font-family: 'TimesNewRomanPS-ItalicMT'; font-weight: normal; font-style: italic; font-size: 16.00pt; font-kerning: none}
span.s4 {font-family: 'TimesNewRomanPS-BoldItalicMT'; font-weight: bold; font-style: italic; font-size: 16.00pt; font-kerning: none}
</style>
</head>
<body>
<p class="p1"><span class="s1">vanlig text </span><span class="s2">bold</span><span class="s1"> </span><span class="s3">italic</span><span class="s1"> </span><span class="s4">bold_italic asd</span></p>
</body>
</html>

我没有用于解决它的确切代码,但我通过迭代nsfontattributes并手动添加支持的html标记来解决它。NSAttributedString扩展中的类似内容:

enumerateAttribute(NSFontAttributeName, inRange: NSMakeRange(0, length), options: NSAttributedStringEnumerationOptions(rawValue: 0)) { (value, range, stop) in
    if let font = value as? UIFont {
        var stringInRange = string.substringInRange(range)
        if font.isBold {
            stringInRange = "<b>\(stringInRange)</b>"
        }
        if font.isItalic {
            stringInRange = "<i>\(stringInRange)</i>"
        }
        // ...
    }
}
EnumeratAttribute(NSFontAttributeName,inRange:NSMakeRange(0,长度),选项:NSAttributedStringEnumerationOptions(rawValue:0)){(值,范围,停止)在
如果让font=值为?UIFont{
var stringInRange=string.substringInRange(范围)
如果font.isBold{
stringInRange=“\(stringInRange)”
}
如果font.isItalic{
stringInRange=“\(stringInRange)”
}
// ...
}
}

我有一个很好的方法将NSAttributedString转换为HTML字符串,而不使用CSS

[webView loadHTMLString:[yourAttributedString stringByReplacingOccurrencesOfString:@"\n" withString:@"<br/>"] baseURL:nil];
NSString *strExclusion = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"];
1) 采用UIWebViewUITextView

[webView loadHTMLString:[yourAttributedString stringByReplacingOccurrencesOfString:@"\n" withString:@"<br/>"] baseURL:nil];
NSString *strExclusion = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"];
2) 在网络视图中设置属性字符串

[webView loadHTMLString:[yourAttributedString stringByReplacingOccurrencesOfString:@"\n" withString:@"<br/>"] baseURL:nil];
NSString *strExclusion = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"];

检查此链接。我希望这对我们有帮助。我不明白这有什么关系。它只修复了空白,这不是我们的问题。问题:您的服务器可以准确地管理哪些标记?因为在您的示例中,您给出了“simples one”:
等。
如果它只是“受限于”,您可以枚举具有有效范围的属性,只需添加自己的标记,并且在必要时不要忘记添加“开始”
和相应的结束。是的。我几乎解决了这个问题,我正按照你建议的方式去做。我完成后将在这里发布我使用的代码。你能做到吗?但如果有复杂的html呢?也许我在问题中没有具体说明,但该应用程序只支持有限数量的html功能,如粗体、斜体、编号列表和项目符号列表。