一個簡單,功能強大的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 | 任何 | 應用於鍵的實際樣式(ex for key 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)創建。