如何设置 SwiftUIText以显示呈现的 HTML 或 Markdown?
像这样的东西:
Text(HtmlRenderedString(fromString: "<b>Hi!</b>"))
Run Code Online (Sandbox Code Playgroud)
或对于 MD:
Text(MarkdownRenderedString(fromString: "**Bold**"))
Run Code Online (Sandbox Code Playgroud)
也许我需要一个不同的视图?
将 lineBreakMode 设置为 byWordWrapping 并将 numberOfLines 设置为 0 似乎还不够:
struct MyTextView: UIViewRepresentable {
func makeUIView(context: Context) -> UILabel {
let label = UILabel()
label.lineBreakMode = .byWordWrapping
label.numberOfLines = 0
label.text = "Here's a lot of text for you to display. It won't fit on the screen."
return label
}
func updateUIView(_ view: UILabel, context: Context) {
}
}
struct MyTextView_Previews: PreviewProvider {
static var previews: some View {
MyTextView()
.previewLayout(.fixed(width: 300, height: 200))
}
}
Run Code Online (Sandbox Code Playgroud)
无论我对 lineBreakMode 使用哪种设置,文本都不会换行。画布预览和实时预览都如下所示:
我得到的最接近的是设置 preferredMaxLayoutWidth,这确实会导致文本换行,但似乎没有一个值表示“无论视图大小如何”。