MarkdownView
MarkdownView 是基于 WKWebView 的 UI 元素,并内部使用 markdown-it 和 highlight-js。
如何使用
UIViewController
import MarkdownView
let md = MarkdownView()
md.load(markdown: "# Hello World!")
SwiftUI
import SwiftUI
import MarkdownView
struct SampleUI: View {
var body: some View {
ScrollView {
MarkdownUI(body: markdown)
.onTouchLink { link in
print(link)
return false
}
.onRendered { height in
print(height)
}
}
}
private var markdown: String {
let path = Bundle.main.path(forResource: "sample", ofType: "md")!
let url = URL(fileURLWithPath: path)
return try! String(contentsOf: url, encoding: String.Encoding.utf8)
}
}
选项
md.isScrollEnabled = false
// called when rendering finished
md.onRendered = { [weak self] height in
self?.mdViewHeight.constant = height
self?.view.setNeedsLayout()
}
// called when user touch link
md.onTouchLink = { [weak self] request in
guard let url = request.url else { return false }
if url.scheme == "file" {
return false
} else if url.scheme == "https" {
let safari = SFSafariViewController(url: url)
self?.navigationController?.pushViewController(safari, animated: true)
return false
} else {
return false
}
}
实验性功能
这不稳定
自定义CSS样式
请查看示例/ViewController/CustomCss.swift。
插件
请查看示例/ViewController/Plugins.swift。每个插件应该是自包含的,不依赖外部插件。
这里是一个构建与 compatible library 兼容的 markdown-it-new-katex
的示例项目。
需求
目标 | 版本 |
---|---|
iOS | => 13.0 |
Swift | => 5.2 |
安装
MarkdownView 可通过 Swift 包管理器 或 CocoaPods 或 Carthage 获得。
Swift包管理器
dependencies: [
.package(url: "https://github.com/keitaoouchi/MarkdownView.git", from: "1.7.1")
]
另外,您也可以通过Xcode直接添加包。
CocoaPods
pod "MarkdownView"
Carthage
github "keitaoouchi/MarkdownView"
有关详细信息,请遵循Carthage 说明
作者
keita.oouchi, [email protected]
许可
bootstrap 的许可协议为 MIT 许可协议。
highlight.js 的许可协议为 BSD-3-Clause 许可协议。
markdown-it 的许可协议为 MIT 许可协议。
MarkdownView 可使用 MIT 许可协议。更多详细信息请参阅 LICENSE 文件。