一个简单,功能强大的SwiftUI文本编辑器,用于iOS和MACO,带有实时语法突出显示。
突出显示您的用户类型的重要内容。
支持iOS 13.0+和MACOS 10.15+。
文件 - > Swift软件包 - >添加软件包依赖关系并使用URL https://github.com/kyle-n/HighlightedTextEditor 。
将pod 'HighlightedTextEditor'添加到您的Podfile并运行pod install 。
LighlightsedTextEditor将样式应用于您提供的文本匹配的正则表达式图案。如下示例所示,您可以将多种样式应用于每个正则图案。
import HighlightedTextEditor
// matches text between underscores
let betweenUnderscores = try ! NSRegularExpression ( pattern : " _[^_]+_ " , options : [ ] )
struct ContentView : View {
@ State private var text : String = " "
private let rules : [ HighlightRule ] = [
HighlightRule ( pattern : betweenUnderscores , formattingRules : [
TextFormattingRule ( fontTraits : [ . traitItalic , . traitBold ] ) ,
TextFormattingRule ( key : . foregroundColor , value : UIColor . red ) ,
TextFormattingRule ( key : . underlineStyle ) { content , range in
if content . count > 10 { return NSUnderlineStyle . double . rawValue }
else { return NSUnderlineStyle . single . rawValue }
}
] )
]
var body : some View {
VStack {
HighlightedTextEditor ( text : $text , highlightRules : rules )
// optional modifiers
. onCommit { print ( " commited " ) }
. onEditingChanged { print ( " editing changed " ) }
. onTextChange { print ( " latest text value " , $0 ) }
. onSelectionChange { ( range : NSRange ) in
print ( range )
}
. introspect { editor in
// access underlying UITextView or NSTextView
editor . textView . backgroundColor = . green
}
}
}
}请注意,nsregularexpression一次实例化。每次重新绘制时,都不应该重新创建它。这有助于性能。
我在[HighlightRule]上包含了一些有用的语法突出显示为静态VAR的有用预设。如果您对其他有用的预设有想法,请随时使用预设代码打开拉动请求。
电流预设包括:
markdownurl使用预设的示例:
HighlightedTextEditor ( text : $text , highlightRules : . markdown )我还添加了一个预设变量NSRegularExpression.all ,以便轻松选择整个字符串。
使用它的示例:
HighlightedTextEditor ( text : $text , highlightRules : [
HighlightRule ( pattern : . all , formattingRule : TextFormattingRule ( key : . underlineStyle , value : NSUnderlineStyle . single . rawValue ) )
] ) | 范围 | 类型 | 描述 |
|---|---|---|
text | 绑定<string> | 字段的文字内容 |
highlightRules | [Highlightrule] | 这些模式的图案和格式 |
.introspect(callback: (_ editor: HighlightedTextEditorInternals) -> Void) :允许您允许开发人员访问LightlightedTextEditor的基础Uikit或AppKit对象.onCommit(_ callback: @escaping () -> Void).onEditingChanged(_ callback: @escaping () -> Void).onTextChange(_ callback: @escaping (_ editorContent: String) -> Void) text.onSelectionChange(_ callback: @escaping (_ selectedRange: NSRange) -> Void).onSelectionChange(_ callback: @escaping (_ selectedRanges: [NSRange]) -> Void)作为参数传递给.introspect()回调。 HLTE API不支持以某种方式自定义编辑器行为。
| 财产 | 类型 | 描述 |
|---|---|---|
textView | UITEXTVIEW或NSTEXTVIEW | 用于自定义UIKIT/APPKIT文本编辑器 |
scrollView | NSSCrollview? | 用于自定义NSSCrollview包装器。在Uikit返回nil |
| 范围 | 类型 | 描述 |
|---|---|---|
pattern | nsregularexpression | 您要突出的内容。应该对一次进行实例化。 |
formattingRule | textformattingrule | 适用于与pattern匹配的所有文本的样式 |
formattingRules | [textformattingrule] | 适用于所有文本匹配pattern的样式阵列 |
TextFormattingRule提供了三种不同的初始化器,每个初始化器都设置了一种样式。要设置多种样式,请使用多个文本形式。
| 范围 | 类型 | 描述 |
|---|---|---|
key | nsattribedstring.key | 设定的样式( .foregroundColor , .underlineStyle ) |
value | 任何 | 应用于key的实际样式(ex for key = .foregroundColor , value是UIColor.red或NSColor.red ) |
| 范围 | 类型 | 描述 |
|---|---|---|
key | nsattribedstring.key | 设定的样式( .foregroundColor , .underlineStyle ) |
calculateValue | (字符串,范围<string.index>) - >任何 | 一个计算key的回调。第一个参数是与正则匹配的文本内容,其次是匹配范围在整个字符串中。 |
value使用较旧的未型API,因此您必须检查文档是否可以通过哪种类型输入给定的key 。
| 范围 | 类型 | 描述 |
|---|---|---|
fontTraits | uifontdescriptor.symbolictraits或nsfontdescriptor.symbolictraits | 文本格式属性(ex [.traitBold]在uikit中,appkit中的.bold ) |
如果要针对iOS 14 / macOS 11,则可以利用新的SwiftUI API来使用便利性初始化器将颜色转换为Uicolors或Nscolors。
| 范围 | 类型 | 描述 |
|---|---|---|
foregroundColor | 颜色 | 文字的颜色 |
fontTraits | uifontdescriptor.symbolictraits或nsfontdescriptor.symbolictraits | 文本格式属性(ex [.traitBold]在uikit中,appkit中的.bold ) |
苹果以其智慧尚未启用Xcode 12克的这些功能。如果您使用Xcode Beta并要启用此初始化器,请转到Project_Name-> targets->指定的平台 - > build build设置 - > Swift Compiler-自定义标志,然后添加flag -DBETA 。 <
您是否在应用程序中使用亮点文本?我很想在这里介绍您!请打开拉动请求,该请求将新的子弹添加到下面的列表中,并带有您的应用程序名称以及指向其testflight或App Store页面的链接。
AppKit文本编辑器代码基于Thiago Holanda的MaceditorTextView。
由凯尔·纳扎里奥(Kyle Nazario)创建。