作為一個開發人員,日常經常會需要編寫各種各樣的文件/材料之類的,個人非常喜歡用 Markdown 來完成這些工作,Markdown 的優點就不再贅述了,大家應該都有過了解,不過目前 iOS 原生並沒有提供任何對 Markdown 的支援。所以最近基於 cmark-gfm 把 Markdown 轉 HTML 的功能封裝了一遍,並且在原有基礎上新增了對列表 table 的支援,同時利用 WKWebView 做了一個可直接展示 Markdown 的 View,方便以後使用,現已開源到 GitHub 基於 WTFPL 協議進行分發,需要的同學可以自取。
EFMarkdown 是一個輕量級的 Markdown 庫,可以用來將 Markdown 轉為 HTML,也可以用來直接展示 Markdown 對其進行預覽。
預覽
sample1 | sample2 | sample3 | sample4 |
---|---|---|---|
示例
- 利用
git clone
命令下載本倉庫; - 利用 cd 命令切換到 Example 目錄下,執行
pod install
命令; - 隨後開啟
EFMarkdown.xcworkspace
編譯即可。
或執行以下命令:
git clone git@github.com:EyreFree/EFMarkdown.git; cd EFMarkdown/Example; pod install; open EFMarkdown.xcworkspace
複製程式碼
環境
- XCode 8.0+
- Swift 3.0+
安裝
EFMarkdown 可以通過 CocoaPods 進行獲取。只需要在你的 Podfile 中新增如下程式碼就能實現引入:
pod "EFMarkdown"
複製程式碼
使用
1. 將 Markdown 轉為 HTML
你可以利用 EFMarkdown
輕鬆實現 Markdown 字串到 HTML 字串地轉換,示例程式碼如下:
let markdown = "# Hello"
var html = ""
do {
html = try EFMarkdown().markdownToHTML(markdown, options: EFMarkdownOptions.safe)
print(html) // 這裡會輸出 "<h1>Hello</h1>\n"
} catch let error as NSError {
print ("Error: \(error.domain)")
}
複製程式碼
2. 對 Markdown 進行預覽
你可以利用 EFMarkdownView
實現對 Markdown 字串的預覽,示例程式碼如下:
let screenSize = UIScreen.main.bounds
let markView = EFMarkdownView()
markView.frame = CGRect(x: 0, y: 20, width: screenSize.width, height: screenSize.height - 20)
self.view.addSubview(markView)
markView.load(markdown: testMarkdownFileContent(), options: [.default]) {
[weak self] (_, _) in
if let _ = self {
// 可選:你可以通過在此處傳入一個百分比來改變字型大小
markView.setFontSize(percent: 128)
printLog("load finish!")
}
}
複製程式碼
3. 選項
你可以通過傳入不同的選項來控制底層 cmark
對 Markdown 字串的處理,預設傳入的值為 safe
。
可選的值有以下這些:
- default
- sourcePos
- hardBreaks
- safe
- noBreaks
- validateUTF8
- smart
- githubPreLang
- liberalHtmlTag
更多關於這些選項的資訊,可以參考 cmark
。
作者
EyreFree, eyrefree@eyrefree.org
協議
EFMarkdown 基於 WTFPL 協議進行分發和使用,更多資訊參見協議檔案。
如有任何智慧財產權、版權問題或理論錯誤,還請指正。
https://juejin.im/post/5a3217456fb9a0451b049081
轉載請註明原作者及以上資訊。