MarkdownView

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")

块指令的实现方式完全相同。

Swift Package Manager

在您的 Package.swift Swift Package Manager 清单中,将以下依赖项添加到您的 dependencies 参数

.package(url: "https://github.com/LiYanan2004/MarkdownView.git", .branch("main")),

将依赖项添加到您在清单中声明的任何目标

.target(name: "MyTarget", dependencies: ["MarkdownView"]),

依赖项