gpt4 book ai didi

html - 更改Swift NSAttributedString的无序列表的字体

转载 作者:行者123 更新时间:2023-12-01 22:18:05 25 4
gpt4 key购买 nike

我试图从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 1Item 2不在我指定的字体中。

我试图为 ul标签和 li标签添加样式,但是结果相同。

为什么NSAttributedString用正确的字体渲染所有文本,除了无序列表?有没有更好的方法可以使用NSAttributedString创建无序列表而不是使用html?

最佳答案

与通过使用NSMutableParagraphStyle代替使用HTML无序列表相比,我找到了更好的解决方案:

let myAttributedString = NSMutableAttributedString()

// Create a paragraph style
let paragraphStyle: NSMutableParagraphStyle = NSParagraphStyle.default.mutableCopy() as! NSMutableParagraphStyle
paragraphStyle.tabStops = [NSTextTab(textAlignment: .left, location: 10, options: [:])]
paragraphStyle.firstLineHeadIndent = 0
paragraphStyle.headIndent = 10

let item1 = NSMutableAttributedString(string: "\u{2022} Item1\n\n", attributes: [.font: UIFont.systemFont(ofSize: 14.0), .paragraphStyle: paragraphStyle])

let item2 = NSMutableAttributedString(string: "\u{2022} Item2\n\n", attributes: [.font: UIFont.systemFont(ofSize: 14.0), .paragraphStyle: paragraphStyle])

myAttributedString.append(item1)
myAttributedString.append(item2)

现在, myAttributedString以正确的字体和正确的样式打印出 item1item2(包装的单词的minx值与项目符号的值不同)

我认为HTML部分出现了不正确的字体,因为我试图创建一个NSAttributedString,其中包含一些普通的NSAttributedString,一个HTML NSAttributedString,然后是更多的普通NSAttributedStrings。我不认为这应该是一个问题,也许是一个错误???

关于html - 更改Swift NSAttributedString的无序列表的字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50475812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com