MarkdownView 是一个 Swift 包,用于在 SwiftUI 中原生渲染 Markdown。
感谢 apple/swift-markdown,它可以完全符合 CommonMark Spec。
这是一个预览:)
您可以在以下平台中使用 MarkdownView
您可以通过提供 Markdown 格式的字符串来创建 Markdown
视图。
MarkdownView(text: "This is the Apple's **newly published** [swift-markdown](https://github.com/apple/swift-markdown)")
如果您的 Markdown 包含复选框,您可以提供一个 Binding
字符串。
@State var text = """
- [x] Write the press release
- [ ] Update the website
- [ ] Contact the media
"""
MarkdownView(text: $text)
有关更多信息,请查看 文档
您可以设置自定义字体或更改文本样式。
MarkdownView(text: "# H1 title")
.font(.largeTitle.weight(.black), for: .h1)
代码块和块引用的默认着色颜色是强调色。
您可以显式地自定义它们。
MarkdownView(text: "> Quote and `inline code`")
.tint(.pink, for: .inlineCodeBlock)
您可以添加自定义图像提供者和块指令提供者来显示您的内容。
为此,首先创建您的提供者。
struct CustomImageProvider: ImageDisplayable {
func makeImage(url: URL, alt: String?) -> some View {
AsyncImage(url: url) {
switch $0 {
case .empty: ProgressView()
case .success(let image): image.resizable()
case .failure(let error): Text(error.localizedDescription)
@unknown default: Text("Unknown situation")
}
}
}
}
然后将您的提供者应用于 MarkdownView
。
MarkdownView(text: markdownText)
.imageProvider(CustomImageProvider(), forURLScheme: "my-image")
块指令的实现方式完全相同。
在您的 Package.swift
Swift Package Manager 清单中,将以下依赖项添加到您的 dependencies
参数
.package(url: "https://github.com/LiYanan2004/MarkdownView.git", .branch("main")),
将依赖项添加到您在清单中声明的任何目标
.target(name: "MyTarget", dependencies: ["MarkdownView"]),