我可以将包含降价的字符串传递给自定义视图吗?
Can I pass a string containing markdown to custom view?
我想将包含 markdown 的字符串传递给自定义视图并在该视图中完成格式化。
示例:
struct MyTest: View {
let text: String // Some other type needed here
init(_ text: String) { self.text = text }
var body: some View {
Text(text)
Text("*Inline*")
}
}
使用视图,例如:MyTest("*Test*")
这将产生输出:
*Test*
Inline
目标是得到输出:
Test
Inline
是否可以将格式传递到自定义视图中的 Text(text)
行?
格式化降价“魔法”来自 Text
的 this initialiser,它需要一个 LocalizedStringKey
。由于 LocalizedStringKey
符合 ExpressibleByStringLiteral
,Text("*Inline*")
将调用此初始化程序,但 Text(someStringVariable)
不会。
因此,要在 text
属性 中格式化降价,您只需调用该初始化程序。您可以使 text
成为 LocalizedStringKey
本身:
struct MyTest: View {
let text: LocalizedStringKey
init(_ text: LocalizedStringKey) { self.text = text }
var body: some View {
Text(text)
Text("*Inline*")
}
}
或者在创建Text
时创建一个LocalizedStringKey
:
Text(LocalizedStringKey(text))
通过使用 Text
的这个初始化程序,您可以获得本地化文本的额外好处! :D
我想将包含 markdown 的字符串传递给自定义视图并在该视图中完成格式化。
示例:
struct MyTest: View {
let text: String // Some other type needed here
init(_ text: String) { self.text = text }
var body: some View {
Text(text)
Text("*Inline*")
}
}
使用视图,例如:MyTest("*Test*")
这将产生输出:
*Test* Inline
目标是得到输出:
Test Inline
是否可以将格式传递到自定义视图中的 Text(text)
行?
格式化降价“魔法”来自 Text
的 this initialiser,它需要一个 LocalizedStringKey
。由于 LocalizedStringKey
符合 ExpressibleByStringLiteral
,Text("*Inline*")
将调用此初始化程序,但 Text(someStringVariable)
不会。
因此,要在 text
属性 中格式化降价,您只需调用该初始化程序。您可以使 text
成为 LocalizedStringKey
本身:
struct MyTest: View {
let text: LocalizedStringKey
init(_ text: LocalizedStringKey) { self.text = text }
var body: some View {
Text(text)
Text("*Inline*")
}
}
或者在创建Text
时创建一个LocalizedStringKey
:
Text(LocalizedStringKey(text))
通过使用 Text
的这个初始化程序,您可以获得本地化文本的额外好处! :D