TokenTextView 是一个轻量级的 UITextView 类,用于编辑和管理令牌化文本。
使用令牌语法 (默认 mustache) 生成和渲染模板
到
嘿 {{GUEST_NAME}}!\n感谢您预订我们的 {{VEHICLE_NAME}}。如果您有任何问题,请随时通过 {{HOST_PHONE_NUMBER}} 联系我们。\n此致\n{{HOST_FIRST_NAME}}
反之亦然。
TokenTextView 可以通过 CocoaPods 安装
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
,您的包将被安装!
将以下行添加到您的 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}}
您可以通过在初始化期间传入 tokenOpen
和 tokenClose
参数来使用自定义标识符
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)
您可以通过 tokenAttributes
和 textAttributes
属性设置文本和令牌的 backgroundColor
、foregroundColor
和 font
。
例如
tokenTextView.tokenAttributes.backgroundColor = .gray
tokenTextView.tokenAttributes.foregroundColor = .purple
tokenTextView.tokenAttributes.font = UIFont.boldSystemFont(ofSize: 12.0)
您还可以通过 kern
和 paragraphStyle
属性设置 kern
值和其他 NSMutableParagraphStyle
值。
TokenTextView 具有一个名为 templatedText
的计算属性,该属性将渲染的文本转换为带有标识符中令牌的文本模板
print(tokenTextView.templatedText)
将产生
这是一个模板化消息的示例。一些变量可以是 {{START_TIME}} 和 {{END_TIME}} 或 {{NAME}} 和 {{BIRTHDATE}}
TokenTextView 可以渲染现有的模板化文本。设置 tokenList
(所有潜在令牌的列表) 将启动渲染。tokenOpen
和 tokenClose
必须与模板化文本中的标识符相对应。
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