NSAttributedString 无法从 DTCoreText 解析 CTForegroundColor 属性
NSAttributedString can not parse CTForegroundColor attribute from DTCoreText
我正在使用 DTCoreText 创建 HTML 属性字符串。 DTCoreText 返回的属性字符串有一个名为 "CTForegroundColor" 的属性,其中包含文本颜色信息。当我在 UI 上显示文本时,它与属性中提到的颜色不同。如果我用苹果的标准方法就可以了。
代码片段:
1.使用 DTCoreText
时
let stringBuilder : DTHTMLAttributedStringBuilder = DTHTMLAttributedStringBuilder.init(html: encodedData, options: nil, documentAttributes: nil)
return stringBuilder.generatedAttributedString()!
输入字符串:
"<style>body{font-family: \'Helvetica\'; font-size:22.000000px;}</style><font color = \"#EB1D1D\">Earn Instantly!</font>"
输出属性字符串:
立即赚钱!{
CTForegroundColor = " [ (kCGColorSpaceICCBased; kCGColorSpaceModelRGB; sRGB IEC61966-2.1; 扩展范围)] ( 0.921569 0.113725 0.113725 1 )";
NSFont = " font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 22.00pt";
NSParagraphStyle = "{base 书写方向=-1,对齐方式=4,换行方式=0,默认制表符间隔=36\nfirst行头缩进=0,头部缩进=0,尾部缩进=0\nline高度倍数=0,最大行高=0,最小行高=0\nline间距调整=0,段落间距=0,段落前间距=0\n}";
}
2。使用苹果标准方法时:
return try NSAttributedString(data: encodedData,
options: [.documentType: NSAttributedString.DocumentType.html,
.characterEncoding: String.Encoding.utf8.rawValue],
documentAttributes: nil)
输出属性字符串:
立即赚钱!{
NSColor = "kCGColorSpaceModelRGB 0.921569 0.113725 0.113725 1 ";
NSFont = " font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 22.00pt";
NSKern = 0;
NSParagraphStyle = "Alignment 4, LineSpacing 0, ParagraphSpacing 0, ParagraphSpacingBefore 0, HeadIndent 0, TailIndent 0, FirstLineHeadIndent 0, LineHeight 27/0, LineHeightMultiple 0, LineBreakMode 0, Tabs (\n), DefaultTabInterval 36, Blocks (\n), Lists (\n), BaseWritingDirection 0, HyphenationFactor 0, TighteningForTruncation NO, HeaderLevel 0";
NSStrokeColor = "kCGColorSpaceModelRGB 0.921569 0.113725 0.113725 1 ";
NSStrokeWidth = 0;
}
因为我在使用 Apple 的标准方法时遇到太多崩溃,所以我想转移到 DTCoreText。
将以下代码添加到选项参数有效!!
let options = [DTUseiOS6Attributes : true] as [String : Any]
原因是将上述属性设置为 true 会使用 NSForegroundColorAttributeName(仅 iOS 6.0 及更高版本可用)而不是默认的 kCTForegroundColorAttributeName。
我正在使用 DTCoreText 创建 HTML 属性字符串。 DTCoreText 返回的属性字符串有一个名为 "CTForegroundColor" 的属性,其中包含文本颜色信息。当我在 UI 上显示文本时,它与属性中提到的颜色不同。如果我用苹果的标准方法就可以了。
代码片段:
1.使用 DTCoreText
时let stringBuilder : DTHTMLAttributedStringBuilder = DTHTMLAttributedStringBuilder.init(html: encodedData, options: nil, documentAttributes: nil)
return stringBuilder.generatedAttributedString()!
输入字符串:
"<style>body{font-family: \'Helvetica\'; font-size:22.000000px;}</style><font color = \"#EB1D1D\">Earn Instantly!</font>"
输出属性字符串:
立即赚钱!{ CTForegroundColor = " [ (kCGColorSpaceICCBased; kCGColorSpaceModelRGB; sRGB IEC61966-2.1; 扩展范围)] ( 0.921569 0.113725 0.113725 1 )"; NSFont = " font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 22.00pt"; NSParagraphStyle = "{base 书写方向=-1,对齐方式=4,换行方式=0,默认制表符间隔=36\nfirst行头缩进=0,头部缩进=0,尾部缩进=0\nline高度倍数=0,最大行高=0,最小行高=0\nline间距调整=0,段落间距=0,段落前间距=0\n}"; }
2。使用苹果标准方法时:
return try NSAttributedString(data: encodedData,
options: [.documentType: NSAttributedString.DocumentType.html,
.characterEncoding: String.Encoding.utf8.rawValue],
documentAttributes: nil)
输出属性字符串:
立即赚钱!{ NSColor = "kCGColorSpaceModelRGB 0.921569 0.113725 0.113725 1 "; NSFont = " font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 22.00pt"; NSKern = 0; NSParagraphStyle = "Alignment 4, LineSpacing 0, ParagraphSpacing 0, ParagraphSpacingBefore 0, HeadIndent 0, TailIndent 0, FirstLineHeadIndent 0, LineHeight 27/0, LineHeightMultiple 0, LineBreakMode 0, Tabs (\n), DefaultTabInterval 36, Blocks (\n), Lists (\n), BaseWritingDirection 0, HyphenationFactor 0, TighteningForTruncation NO, HeaderLevel 0"; NSStrokeColor = "kCGColorSpaceModelRGB 0.921569 0.113725 0.113725 1 "; NSStrokeWidth = 0; }
因为我在使用 Apple 的标准方法时遇到太多崩溃,所以我想转移到 DTCoreText。
将以下代码添加到选项参数有效!!
let options = [DTUseiOS6Attributes : true] as [String : Any]
原因是将上述属性设置为 true 会使用 NSForegroundColorAttributeName(仅 iOS 6.0 及更高版本可用)而不是默认的 kCTForegroundColorAttributeName。