iOS Markdown 轉換及預覽

做爲一個開發人員,平常常常會須要編寫各類各樣的文檔/材料之類的,我的很是喜歡用 Markdown 來完成這些工做,Markdown 的優勢就再也不贅述了,你們應該都有過了解,不過目前 iOS 原生並無提供任何對 Markdown 的支持。因此最近基於 cmark-gfm 把 Markdown 轉 HTML 的功能封裝了一遍,而且在原有基礎上添加了對列表 table 的支持,同時利用 WKWebView 作了一個可直接展現 Markdown 的 View,方便之後使用,現已開源到 GitHub 基於 WTFPL 協議進行分發,須要的同窗能夠自取。html

項目地址:github.com/EyreFree/EF…git


EFMarkdown 是一個輕量級的 Markdown 庫,能夠用來將 Markdown 轉爲 HTML,也能夠用來直接展現 Markdown 對其進行預覽。github

English Introductionswift

預覽

sample1 sample2 sample3 sample4

示例

  1. 利用 git clone 命令下載本倉庫;
  2. 利用 cd 命令切換到 Example 目錄下,執行 pod install 命令;
  3. 隨後打開 EFMarkdown.xcworkspace 編譯便可。

或執行如下命令:bash

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 中添加以下代碼就能實現引入:markdown

pod "EFMarkdown"
複製代碼

使用

1. 將 Markdown 轉爲 HTML

你能夠利用 EFMarkdown 輕鬆實現 Markdown 字符串到 HTML 字符串地轉換,示例代碼以下:dom

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 字符串的預覽,示例代碼以下:post

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字體

可選的值有如下這些:ui

  • default
  • sourcePos
  • hardBreaks
  • safe
  • noBreaks
  • validateUTF8
  • smart
  • githubPreLang
  • liberalHtmlTag

更多關於這些選項的信息,能夠參考 cmark

做者

EyreFree, eyrefree@eyrefree.org

協議

EFMarkdown 基於 WTFPL 協議進行分發和使用,更多信息參見協議文件。


若有任何知識產權、版權問題或理論錯誤,還請指正。 https://juejin.im/post/5a3217456fb9a0451b049081 轉載請註明原做者及以上信息。

相關文章
相關標籤/搜索