【发布时间】:2018-09-13 05:53:25
【问题描述】:
我正在尝试使用 HTML 字符串创建 NSAttributedString,但我必须更改字符串的字体。我能够通过以下方式成功实现这一目标:
let myOriginalString: String = "<!DOCTYPE html>
<head>
<style type=\"text/css\">
body{font-family: '-apple-system','Avenir-Medium',`Avenir-Black`; font-size:14;}
</style>
<body>
My HTML content
</body>"
let data: Data = myOriginalString.data(using: .utf8)
let myConvertedString: NSAttributedString = NSAttributedString(data: data, options: [.documentType: NSAttributedString.DocumentType.html, .characterEncoding: String.Encoding.utf8.rawValue], documentAttributes: nil)
当myConvertedString 在屏幕上呈现时,文本的字体是正确的。
但是当我尝试在 HTML 正文包含 无序列表 的情况下进行相同的转换时,无序列表中的内容不是我指定的格式:
let myOriginalString: String = "<!DOCTYPE html>
<head>
<style type=\"text/css\">
body{font-family: '-apple-system','Avenir-Medium',`Avenir-Black`; font-size:14;}
</style>
<body>
My HTML content
<ul>
<li>Item 1</li>
<li>Item 2</li>
</ul>
</body>"
let data: Data = myOriginalString.data(using: .utf8)
let myConvertedString: NSAttributedString = NSAttributedString(data: data, options: [.documentType: NSAttributedString.DocumentType.html, .characterEncoding: String.Encoding.utf8.rawValue], documentAttributes: nil)
当myConvertedString在屏幕上渲染时,字符串My HTML Content的格式是正确的,但是Item 1和Item 2不是我指定的字体。
我尝试为ul 标签和li 标签添加样式,但结果相同。
为什么 NSAttributedString 用正确的字体渲染所有文本,除了无序列表?有没有更好的方法来创建一个使用 NSAttributedString 而不是使用 html 的无序列表?
【问题讨论】:
-
也许每个项目都缺少结束标签会以某种方式搞砸?
-
糟糕,抱歉,这是一个 typ0。我的实际代码中有结束标签。我已经解决了这个问题。
-
您的 CSS 无效(除非是拼写错误):将反引号替换为
Avenir-Black周围的单引号;并给font-size一个单位:font-size: 14pt;
标签: html ios swift html-lists nsattributedstring