iOS 15 beta 4:带有 Markdown 的 AttributedString 未在 SwiftUI 的文本中呈现?
iOS 15 beta 4: AttributedString with Markdown not rendering in Text in SwiftUI?
我认为这是一个 iOS 15 beta 1 或 2 错误,但从 beta 4 开始我仍然看到这种行为,所以也许我做错了什么:
文本应该使用 Markdown 呈现 AttributedStrings。当将直接字符串文字传递到文本中时,它似乎可以正确呈现,但当 AttributedString 是变量时则不会。我是不是在做一些超级愚蠢的事情?
struct ContentView: View {
var text = AttributedString("**Hello**, `world`! Visit our [website](https://www.capitalone.com).")
var body: some View {
VStack {
Text("**Hello**, `world`! Visit our [website](https://www.capitalone.com).")
.padding()
Text(text)
.padding()
}
}
}
如果您将 Markdown 直接传递到 Text.init()
,SwiftUI 会自动将其转换为 AttributedString
。
但是,要从 Markdown 字符串转换为 AttributedString
,您需要使用 explicit AttributedString(markdown:options:baseURL:)
initialiser。例如:
var text = try! AttributedString(markdown: "**Hello**, `world`! Visit our [website](https://www.capitalone.com).”)
请注意,如果无法正确进行转换,此初始化程序会抛出异常。我在这里使用了 try!
,因为您的示例 Markdown 肯定会转换,但根据 Markdown 文本的来源,您可能希望更智能地处理抛出的错误。
我认为这是一个 iOS 15 beta 1 或 2 错误,但从 beta 4 开始我仍然看到这种行为,所以也许我做错了什么: 文本应该使用 Markdown 呈现 AttributedStrings。当将直接字符串文字传递到文本中时,它似乎可以正确呈现,但当 AttributedString 是变量时则不会。我是不是在做一些超级愚蠢的事情?
struct ContentView: View {
var text = AttributedString("**Hello**, `world`! Visit our [website](https://www.capitalone.com).")
var body: some View {
VStack {
Text("**Hello**, `world`! Visit our [website](https://www.capitalone.com).")
.padding()
Text(text)
.padding()
}
}
}
如果您将 Markdown 直接传递到 Text.init()
,SwiftUI 会自动将其转换为 AttributedString
。
但是,要从 Markdown 字符串转换为 AttributedString
,您需要使用 explicit AttributedString(markdown:options:baseURL:)
initialiser。例如:
var text = try! AttributedString(markdown: "**Hello**, `world`! Visit our [website](https://www.capitalone.com).”)
请注意,如果无法正确进行转换,此初始化程序会抛出异常。我在这里使用了 try!
,因为您的示例 Markdown 肯定会转换,但根据 Markdown 文本的来源,您可能希望更智能地处理抛出的错误。