iOS Markdown 转换及预览
点击上方“iOS开发”,选择“置顶公众号”
关键时刻,第一时间送达!
作为一个开发人员,日常经常会需要编写各种各样的文档/材料之类的,个人非常喜欢用 Markdown 来完成这些工作,Markdown 的优点就不再赘述了,大家应该都有过了解,不过目前 iOS 原生并没有提供任何对 Markdown 的支持。所以最近基于 cmark-gfm 把 Markdown 转 HTML 的功能封装了一遍,并且在原有基础上添加了对列表 table 的支持,同时利用 WKWebView 做了一个可直接展示 Markdown 的 View,方便以后使用,现已开源到 GitHub 基于 WTFPL 协议进行分发,需要的同学可以自取。
项目地址:
https://github.com/EyreFree/EFMarkdown
EFMarkdown 是一个轻量级的 Markdown 库,可以用来将 Markdown 转为 HTML,也可以用来直接展示 Markdown 对其进行预览。
English Introduction
预览
示例
利用 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) // 这里会输出 "
Hello
"} 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 协议进行分发和使用,更多信息参见协议文件。
本文链接:http://www.jianshu.com/p/2e6fb93fd97d
iOS开发整理发布,转载请联系作者授权
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
随时掌握互联网精彩
- 1 习近平G20里约峰会展现大国担当 7915358
- 2 多国驻乌克兰大使馆因袭击风险关闭 7996744
- 3 78岁老太将减持2.5亿股股票 7848526
- 4 二十国集团里约峰会将会卓有成效 7742393
- 5 俄导弹击中乌水电站大坝 7661859
- 6 孙颖莎王艺迪不敌日本削球组合 7546870
- 7 高三女生酒后被强奸致死?检方回应 7451534
- 8 第一视角记录虎鲨吞下手机全程 7335469
- 9 林高远林诗栋止步男双8强 7211092
- 10 智慧乌镇点亮数字经济新未来 7189473