Marklight 1.4.0

Marklight 1.4.0

测试已测试
语言语言 SwiftSwift
许可证 未知
发布最新发布2018年5月
SPM支持SPM

MacTeo维护。



Marklight 1.4.0

  • 作者:
  • Matteo Gavagnin

Marklight

适用于iOS和macOS的Markdown语法高亮器。

License MIT Version Carthage compatible travis-ci codecov.io Swift 4.1 iOS 8+

描述

Marklight是一个可直接使用的组件,用于轻松地为iOS和macOS应用程序中的任何用户可编辑的文本视图添加实时Markdown语法高亮。Marklight不包含从Markdown生成HTML的功能,但您可以使用许多其他可用的组件之一,如Markingbird

正则表达式来自Markingbird,这是一个Markdown解析器和HTML生成器。

Marklight GifScreenshot 0

功能

  • 适用于任何UITextView
  • NSTextStorage子类,可直接使用。
  • 结构优化以提高性能。
  • 适配Swift 4.1。
  • 支持动态文本样式。
  • 选择Markdown语法颜色。
  • 选择代码块的字体和颜色。
  • 选择引用的字体和颜色。
  • 选择动态字体样式文本。
  • 引用缩进。
  • 已文档化。
  • 兼容macOS。
  • 解析测试。
  • 性能测试。

需求

  • iOS 8.0+
  • Xcode 9.3+
  • macOS 10.11+

安装

CocoaPods

CocoaPods 是 Cocoa 项目的依赖管理器。可以使用以下命令进行安装:

$ gem install cocoapods

构建 Marklight 需要 CocoaPods 1.0.0+。

要使用 CocoaPods 将 Marklight 集成到您的 Xcode 项目中,请在您的 Podfile 中指定它。

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!

pod 'Marklight'

然后,运行以下命令:

$ pod install

Carthage

Carthage 是一个去中心化的依赖管理器,它会构建您的依赖并提供二进制框架。

您可以使用以下命令通过 Homebrew 安装 Carthage

$ brew update
$ brew install carthage

要使用 Carthage 将 Marklight 集成到您的 Xcode 项目中,请在您的 Cartfile 中指定它。

github "macteo/Marklight"

运行 carthage update --platform iOS 来构建框架,并将构建的 Marklight.framework 拖入您的 Xcode 项目。

手动

Marklight Xcode 项目添加到您的项目中。然后根据需要将 Marklight 框架添加到应用程序目标的嵌入二进制文件中。

使用

在本存储库中,您可以在ViewController类中找到一个带有少量代码的示例项目,以快速入门。

示例代码是用Swift编写的,但也应该支持Objective-C,如果您发现任何不兼容性,请提交问题。

集成

要创建一个带有Markdown语法高亮的可编辑UITextView,最简单的方法是将提供的MarklightTextStorage类作为NSTextStorage使用,并将UITextViewtextLayout添加到MarklightTextStorage文本存储中。

Marklight模块导入您的Swift类

import Marklight

或者,如果您正在编写Objective-C

#import <Marklight/Marklight-Swift.h>

请注意,您必须让项目生成桥接头,否则集成可能会失败。

在您的UIViewController子类中保存此MarklightTextStorage类的强实例。

let textStorage = MarklightTextStorage()

根据需要自定义外观

  • 动态文本样式。
  • Markdown语法颜色。
  • 代码字体和颜色。
  • 引用字体和颜色。

根据Apple的文档,将UITextViewNSLayoutManager分配给NSTextStorage子类应该足够了,在我们的例子中是MarklightTextStorage

 textStorage.addLayoutManager(textView.layoutManager)

然而,如果您想预加载一些文本而不是让用户从新文本开始,我会遇到一些崩溃。下面提出了一种解决方案。

为了简单起见,我们假设您有一个要在从Storyboard加载的可编辑UITextView内部高亮的String

let string = "# My awesome markdown string"

转换为NSAttributedString

let attributedString = NSAttributedString(string: string)

将加载的字符串设置到UITextView

textView.attributedText = attributedString

将加载的字符串追加到NSTextStorage

textStorage.appendAttributedString(attributedString)

享受。

致谢


Marklight大量依赖于Markingbird,所以非常感谢Kristopher Johnson以及基于Markingbird的所有先前贡献。

许可证

Marklight是在MIT许可证下发布的。有关详细信息,请参阅LICENSE