支持OC、Swift的markdown文檔顯示、編輯框架

github傳送門:NHMarkdown

一個支持Objective-C、Swift的markdown文檔顯示、編輯及轉(zhuǎn)換成HTML文檔的工具

Overview

sample1 sample2 sample3
preview1.png
preview2.png
preview3.png

Example

首先將編譯好的兩個framework庫拖入你的工程:

framework.png

OC:

  1. 導(dǎo)入頭文件

    #import <NHMarkdown/NHMarkdown.h>
    #import <WebKit/WebKit.h>
    
  2. 預(yù)覽markdown:
    <details><summary>方法展示</summary>

    //獲取網(wǎng)絡(luò)上的內(nèi)容
    NSURL *url = [NSURL URLWithString:@"https://nenhall.github.io/2018/09/22/1677ziyouxing/"];
    NSString *content = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
    //獲取本地的markdown文檔內(nèi)容
    //NSString *path = [[NSBundle mainBundle] pathForResource:@"穿越318線川藏游記.md" ofType:nil];
    //NSURL *url = [NSURL fileURLWithPath:path];
    //NSString *content = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
    NHMarkdownView *mdView = [[NHMarkdownView alloc] init];
    mdView.translatesAutoresizingMaskIntoConstraints = NO;
    [self.view addSubview:mdView];
    __weak typeof(self)weakself = self;
    [mdView nh_loadWithMarkdown:content completionHandler:^(WKWebView * _Nonnull wkWeb, WKNavigation * _Nullable wkNav) {
        // Optional: WKUIDelegate, WKNavigationDelegate
        wkWeb.UIDelegate = weakself;
        wkWeb.navigationDelegate = weakself;
    }];
    

    </details>

  3. 編輯markdown文檔:

    NSURL *url = [NSURL URLWithString:@"https://nenhall.github.io/2018/09/22/1677ziyouxing/"];
    NSString *content = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];   
    _textView.text = content;
    
  4. 轉(zhuǎn)換成HTML文檔:

    NSURL *url = [NSURL URLWithString:@"https://nenhall.github.io/2018/09/22/1677ziyouxing/"];
    NSString *content = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];   
    NHMarkdown *mdTool = [[NHMarkdown alloc] init];
    //返回即是文檔全部內(nèi)容
    _markdownContent = [mdTool markdownToHTML:content].copy;
    

swift:

  1. 改相關(guān)頭文件:

    import WebKit
    import NHMarkdown
    
  2. 初始化markdown文檔:

    /** 獲取網(wǎng)絡(luò)上的內(nèi)容 */
    func getNetworkContent() -> String {
        let path: String = "https://nenhall.github.io/2018/09/22/1677ziyouxing/"
        guard let url: URL = URL(string: path),
        let content = try? String(contentsOf: url, encoding:String.Encoding.utf8)
        else {
            return ""
        };
        return content;
    }
    /** 獲取本地的markdown文檔內(nèi)容 */
    func getLocalContent() -> String {
        if let path = Bundle.main.url(forResource: "穿越318線川藏游記", withExtension: "md") {
            do{
                return try String(contentsOf: path, encoding:String.Encoding.utf8)
            } catch {
                return ""
            }
        }
        return "";
    }
    
  3. 解析、編輯markdown:

    let content: String = getNetworkContent();
    textView.text = content
    
  4. 轉(zhuǎn)換成HTML文檔:

    let content: String = NHMarkdown().markdownToHTML(getNetworkContent());
    
  5. 初始化NHMarkdown、預(yù)覽

    /** 初始化markdown View */
        func initializeMarkdownView(content: String) -> Void {
            let screenSize = UIScreen.main.bounds
            markView.backgroundColor = UIColor.red
            markView.frame = CGRect(x: 0, y: 64, width: screenSize.width, height: screenSize.height - 64)
            markView.onRendered = {
                [weak self] (height) in
                if let _ = self {
                    // Optional: you can know the change of height in this block
                    print("onRendered height: \(height ?? 0)")
                }
            }
            self.view.addSubview(markView)
            markView.load(markdown: content, options: .default) { [weak self] (wkView: WKWebView, wkNav: WKNavigation?) in
                // Optional: WKUIDelegate, WKNavigationDelegate
                wkView.uiDelegate = self;
                wkView.navigationDelegate = self;
                // Optional: you can change font-size with a value of percent here
                self?.markView.setFontSize(percent: 128)
                printLog("load finish!")
            }
        }
    

github傳送門:NHMarkdown

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容