MarkdownKit
MarkdownKit 是一个用于 iOS 的可定制和可扩展的 Markdown 解析器。它通过正则表达式支持许多标准 Markdown 元素。它还允许自定义所有 Markdown 元素的字体和颜色属性。
截图
安装
通过 CocoaPods 安装
MarkdownKit 通过 CocoaPods 提供。CocoaPods 是一个依赖项管理器,它自动并简化了在项目中使用第三方库如 MarkdownKit 的过程。您可以使用以下命令安装 CocoaPods
gem install cocoapods
要将MarkdownKit集成到Xcode项目中使用CocoaPods,只需在Podfile中添加以下行
pod "MarkdownKit"
之后,运行以下命令
pod install
通过Carthage安装
MarkdownKit可以通过Carthage获取。Carthage是一个去中心化的依赖管理工具,它会构建你的依赖并提供二进制框架。
你可以使用以下命令通过Homebrew安装Carthage
brew update
brew install carthage
要将MarkdownKit集成到Xcode项目中使用Carthage,只需在Cartfile中添加以下行
github "ivanbruel/MarkdownKit"
之后,运行以下命令
carthage update
支持元素
*italic* or _italics_
**bold** or __bold__
~~strikethrough~~
# Header 1
## Header 2
### Header 3
#### Header 4
##### Header 5
###### Header 6
> Quote
* List
- List
+ List
`code` or ```code```
[Links](http://github.com/ivanbruel/MarkdownKit/)
使用方法
为了使用MarkdownKit将Markdown转换为NSAttributedString,你需要创建一个MarkdownParser
实例,并调用parse(_)
函数。
let markdownParser = MarkdownParser()
let markdown = "I support a *lot* of custom Markdown **Elements**, even `code`!"
label.attributedText = markdownParser.parse(markdown)
自定义
let markdownParser = MarkdownParser(font: UIFont.systemFont(ofSize: 18))
markdownParser.enabledElements = .disabledAutomaticLink
markdownParser.bold.color = UIColor.red
markdownParser.italic.font = UIFont.italicSystemFont(ofSize: 300)
markdownParser.header.fontIncrease = 4
扩展性
要添加新的Markdown元素,你需要实现MarkdownElement
协议(或其派生协议),并将其添加到MarkdownParser
中。
import MarkdownKit
class MarkdownSubreddit: MarkdownLink {
private static let regex = "(^|\\s|\\W)(/?r/(\\w+)/?)"
override var regex: String {
return MarkdownSubreddit.regex
}
override func match(match: NSTextCheckingResult,
attributedString: NSMutableAttributedString) {
let subredditName = attributedString.attributedSubstringFromRange(match.rangeAtIndex(3)).string
let linkURLString = "http://reddit.com/r/\(subredditName)"
formatText(attributedString, range: match.range, link: linkURLString)
addAttributes(attributedString, range: match.range, link: linkURLString)
}
}
let markdownParser = MarkdownParser(customElements: [MarkdownSubreddit()])
let markdown = "**/r/iosprogramming** can be *markdown* as well!"
label.attributedText = markdownParser.parse(markdown)
示例
要运行示例项目,首先克隆仓库,然后从示例目录运行pod install
。
致谢
该库深受TSMarkdownParser和SwiftyMarkdown的启发。
特别感谢Michael Brown在UTF-16转义/反转义方面的帮助。
许可协议
MarkdownKit遵循MIT许可协议。更多信息请查看LICENSE文件。