如何设置 SwiftUI Text
以显示呈现的 HTML 或 Markdown?
是这样的:
Text(HtmlRenderedString(fromString: "<b>Hi!</b>"))
或对于医学博士:
Text(MarkdownRenderedString(fromString: "**Bold**"))
也许我需要一个不同的视图?
原文由 Div 发布,翻译遵循 CC BY-SA 4.0 许可协议
文本现在支持基本的 Markdown!
struct ContentView: View {
var body: some View {
VStack {
Text("Regular")
Text("*Italics*")
Text("**Bold**")
Text("~Strikethrough~")
Text("`Code`")
Text("[Link](https://apple.com)")
Text("***[They](https://apple.com) ~are~ `combinable`***")
}
}
}
结果:
但是,如果您在属性中存储包含 Markdown 的 String
,它不会呈现。我很确定这是一个错误。
struct ContentView: View {
@State var textWithMarkdown = "***[They](https://apple.com) ~are~ `combinable`***"
var body: some View {
Text(textWithMarkdown)
}
}
结果:
您可以通过使用 init(markdown:options:baseURL:)
AttributedString
--- 转换为 textWithMarkdown
来解决此问题。
struct ContentView: View {
@State var textWithMarkdown = "***[They](https://apple.com) ~are~ `combinable`***"
var body: some View {
Text(textWithMarkdown.markdownToAttributed()) /// pass in AttributedString to Text
}
}
extension String {
func markdownToAttributed() -> AttributedString {
do {
return try AttributedString(markdown: self) /// convert to AttributedString
} catch {
return AttributedString("Error parsing markdown: \(error)")
}
}
}
结果:
原文由 aheze 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答1.5k 阅读✓ 已解决
2 回答882 阅读✓ 已解决
1 回答962 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
1 回答896 阅读✓ 已解决
2 回答782 阅读
1 回答771 阅读✓ 已解决
Text
只能显示String
s.您可以将UIViewRepresentable
与UILabel
和attributedText
一起使用。可能稍后会为
SwiftUI.Text
提供 attributedText 文本支持。