TokenTextView

TokenTextView 是一个轻量级的 UITextView 类,用于编辑和管理令牌化文本。

使用令牌语法 (默认 mustache) 生成和渲染模板

功能

在文本中插入令牌

创建模板化或令牌化文本

嘿 {{GUEST_NAME}}!\n感谢您预订我们的 {{VEHICLE_NAME}}。如果您有任何问题,请随时通过 {{HOST_PHONE_NUMBER}} 联系我们。\n此致\n{{HOST_FIRST_NAME}}

反之亦然。

剪切/复制 & 粘贴令牌

要求

安装

TokenTextView 可以通过 CocoaPods 安装

Swift Package Manager

TokenTextView 可以通过 SPM 安装。一旦您的 Swift 包设置完成,只需将 TokenTextView 添加到 Package.swift 中的 dependencies

dependencies: [
  .package(url: "https://github.com/open-turo/token-text-view.git", upToNextMajor:(from:"1.0.0"))
]

您也可以使用 Xcode 通过 SPM 安装 TokenTextView。转到 File -> Swift Packages -> Add Package Dependency。输入 url (https://github.com/open-turo/token-text-view.git),选择 Version -> Up to next major 并在 Rules 部分输入 1.0.0。点击 Next,您的包将被安装!

CocoaPods

将以下行添加到您的 Podfile

pod 'TokenTextView'

然后安装 TokenTextView

pod install

设置

初始化

TokenTextView 是 UITextView 的子类,因此您可以在代码中或通过 Storyboard 像普通的 UIKit 对象一样声明它

let tokenTextView = TokenTextView()

@IBOutlet var tokenTextView: TokenTextView!

TokenTextView 具有以下初始化器

init(messageText: String, tokens: [Token], tokenOpen: String, tokenClose: String)

TokenTextView 需要使用 Token 对象进行初始化,然后才能令牌化文本。您可以在对象初始化期间执行此操作,或稍后设置它们

let tokenArray = [Token]()
let tokenTextView = TokenTextView(tokens: tokenArray)

let tokenTextView = TokenTextView()
let tokenArray = [Token]()

tokenTextView.tokens = tokenArray

TokenTextView 可以将令牌化文本转换为文本模板,反之亦然。为了做到这一点,它使用标识符来指定令牌。它被设置为默认使用“mustache”语法

{{TOKEN_IDENTIFIER}}

您可以通过在初始化期间传入 tokenOpentokenClose 参数来使用自定义标识符

let tokenTextView = TokenTextView(tokenOpen: "{{", tokenClose: "}}")

用法

插入令牌

您可以使用以下方法将令牌插入到 TokenTextView 的文本中

insert(_ token: Token, at insertRange: NSRange? = nil)

您可以指定插入令牌的位置

let token = Token(name: "Token name", identifier: "TOKEN_IDENTIFIER")
let range = NSRange(location: 0, length: 0)

tokenTextView.insert(token, at: range)

或者您可以将 insertRange 留空,将使用当前光标位置

let token = Token(name: "Token name", identifier: "TOKEN_IDENTIFIER")

tokenTextView.insert(token)

样式化令牌和文本

您可以通过 tokenAttributestextAttributes 属性设置文本和令牌的 backgroundColorforegroundColorfont

例如

tokenTextView.tokenAttributes.backgroundColor = .gray
tokenTextView.tokenAttributes.foregroundColor = .purple
tokenTextView.tokenAttributes.font = UIFont.boldSystemFont(ofSize: 12.0)

您还可以通过 kernparagraphStyle 属性设置 kern 值和其他 NSMutableParagraphStyle 值。

创建模板化文本

TokenTextView 具有一个名为 templatedText 的计算属性,该属性将渲染的文本转换为带有标识符中令牌的文本模板

print(tokenTextView.templatedText)

将产生

这是一个模板化消息的示例。一些变量可以是 {{START_TIME}} 和 {{END_TIME}} 或 {{NAME}} 和 {{BIRTHDATE}}

创建令牌化文本

TokenTextView 可以渲染现有的模板化文本。设置 tokenList (所有潜在令牌的列表) 将启动渲染。tokenOpentokenClose 必须与模板化文本中的标识符相对应。

tokenTextView.text = "Hey {{GUEST_NAME}}!\nThanks for booking our {{VEHICLE_NAME}}. Feel free to contact us at {{HOST_PHONE_NUMBER}} if you have any questions.\nBest\n{{HOST_FIRST_NAME}}"
tokenTextView.tokenList = tokenArray

将产生

示例

欢迎查看 Example/TokenTextView 中的示例项目。

打开 TokenTextViewExample.xcodeproj 并运行项目。将出现一个包含 TokenTextView 和示例令牌列表的视图控制器。只需点击令牌即可将令牌插入到文本中

贡献

请点击此处查看有关如何为此项目做出贡献的指南。

许可

TokenTextView 根据 MIT 许可证发布。有关详细信息,请参阅 LICENSE.md