为了账号安全,请及时绑定邮箱和手机立即绑定

支持OC、Swift的markdown文档显示、编辑框架

2019.02.01 13:37 382浏览

一个支持Objective-CSwift的markdown文档显示、编辑及转换成HTML文档的工具

Overview

sample1sample2sample3

preview1.png

preview2.png


preview3.png



Example

首先将编译好的两个framework库拖入你的工程:

framework.png


OC:

  1. 导入头文件

    #import <NHMarkdown/NHMarkdown.h>#import <WebKit/WebKit.h>
  2. 预览markdown:
    <details><summary>方法展示</summary>

    //获取网络上的内容NSURL *url = [NSURL URLWithString:@"https://nenhall.github.io/2018/09/22/1677ziyouxing/"];NSString *content = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];//获取本地的markdown文档内容//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. 转换成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];//返回即是文档全部内容_markdownContent = [mdTool markdownToHTML:content].copy;

swift:

  1. 改相关头文件:

    import WebKitimport NHMarkdown
  2. 初始化markdown文档:

    /** 获取网络上的内容 */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文档内容 */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. 转换成HTML文档:

    let content: String = NHMarkdown().markdownToHTML(getNetworkContent());
  5. 初始化NHMarkdown、预览

    /** 初始化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!")
            }
        }



作者:nenhall
链接:https://www.jianshu.com/p/f55e9e7999eb


点击查看更多内容
0人点赞

若觉得本文不错,就分享一下吧!

评论

相关文章推荐

正在加载中
意见反馈 邀请有奖 帮助中心 APP下载
官方微信

举报

0/150
提交
取消